基于Python 爬书旗网小说数据并可视化,通过js逆向对抗网站反爬,想爬啥就爬啥

简介: 本文介绍了如何使用Python编写网络爬虫程序爬取书旗网上的小说数据,并通过逆向工程对抗网站的反爬机制,最后对采集的数据进行可视化分析。

目标:

基于Python的书旗网小说网站的数据采集与分析的目标是通过自动化程序收集书旗网上的小说相关数据,并对这些数据进行分析和处理,以获取有价值的信息和洞察。具体目标包括以下几个方面,首先利用Python编写网络爬虫程序,从书旗网上抓取小说的标题、作者、分类、评分、阅读量等信息,对采集到的数据进行清洗和整理,去除重复、错误或无效的数据,然后将清洗后的数据存储到数据库或文件中,以备后续分析使用。利用Python的数据分析工具,如Pandas、NumPy等,对采集到的数据进行统计分析、可视化和挖掘,分析小说的热门分类、作者的作品数量分布、读者评分情况等,揭示用户喜好和趋势。通过对书旗网上小说市场的数据进行分析,如同类小说的数量、观看量等,了解竞争对手的情况,为制定市场策略和推广活动提供依据。

爬虫过程:

通过分析网页中的JavaScript代码,了解网站的加密和反爬机制,使用Python的相关库(如PyExecJS)模拟执行JavaScript代码,绕过反爬机制,获取所需数据。使用requests库发送HTTP请求:利用Python的requests库发送GET或POST请求,携带相应的URL、参数和请求头信息,模拟浏览器行为,获取整个网页的内容。对于返回的网页内容,如果是JSON格式的数据,可以使用Python内置的json库解析和提取所需的数据字段,将其转化为Python的数据结构,如字典、列表等。具体如下:

1、确定网页URL

2、寻找规律,发现有反爬,其中timestamp用到13位的时间序列,只要转换就可以发现这个数是当前电脑的点击时间,而最难的则是sign,这个数据一直在变化,所以得找到sign对应的js,对这个数据进行逆向,找到规律。

3、定位js,分析js进行逆向

通过分析发现sign的值是经过这个组合生成的:

'1'+页码+'6'+'pc'+当前时间的序列数据+'000'+'MJWLLtDX9kXAHY3EIP8hNvVLiA5qsD8A'

所以只需要通过复制sign的js文件,就能生成所需的sign值,通过PyExecJS库将js文件运行即可。

主要代码如下:

data\_m = open('MD5.js', 'r', encoding='utf-8').read()
data\_z = js2py.eval\_js(data\_m)
sign\_n='1'+str(j+1)+'6'+'pc'+str(int(time.time()))+'000'+'MJWLLtDX9kXAHY3EIP8hNvVLiA5qsD8A'
print(sign\_n)

最后将采集到的数据存储为MySQL。爬虫代码如下:

def shuqi(shu):
    url='https://jognv1.shuqireader.com/copyright/search?page={}&perPage=6&deriveId=&tagId=&deriveStatus=&isHao=&batchId=&order=1&platform=pc&timestamp={}&sign='
    headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.47'
    }
    for j in range(35,shu):
        data\_m = open('MD5.js', 'r', encoding='utf-8').read()
        data\_z = js2py.eval\_js(data\_m)
        sign\_n='1'+str(j+1)+'6'+'pc'+str(int(time.time()))+'000'+'MJWLLtDX9kXAHY3EIP8hNvVLiA5qsD8A'
        print(sign\_n)
        url1=url.format(str(j+1),str(int(time.time()))+'000')+data\_z(sign\_n)
        print(url1)
        print(data\_z(sign\_n))
        res=requests.get(url.format(str(j+1),str(int(time.time()))+'000')+data\_z(sign\_n),headers=headers).json()

        soup=res\['data'\]\['bookList'\]
        for book\_list in soup:
            list0=\[\]
            name=book\_list\['bookName'\]
            author=book\_list\['authorName'\]
            num=book\_list\['wordNum'\]
            type=book\_list\['copyrightTags'\]
            type0=''
            for t in type:
                type0+=t\['name'\]+' '
            hot=book\_list\['hotScore'\]
            save\_type=book\_list\['derives'\]\['sell'\]
            save\_type0=''
            for d in save\_type:
                save\_type0 += d\['name'\] + ' '
            sell\_out=book\_list\['derives'\]\['sellOut'\]
            sell\_out0=''
            for s in sell\_out:
                sell\_out0 += s\['name'\] + ' '
            zhuangtai=book\_list\['state'\]
            list0.append(name)
            list0.append(author)
            list0.append(num)
            list0.append(type0)
            list0.append(hot)
            list0.append(save\_type0)
            list0.append(sell\_out0)
            list0.append(zhuangtai)
            print(list0)
            cun(list0)
        time.sleep(random.randint(2,4))
if \_\_name\_\_ == '\_\_main\_\_':
    shuqi(40)

爬取效果:

可视化代码就省略了,想要的可以联系我,这里是可视化效果:

相关文章
|
1天前
|
算法 Serverless 数据处理
从集思录可转债数据探秘:Python与C++实现的移动平均算法应用
本文探讨了如何利用移动平均算法分析集思录提供的可转债数据,帮助投资者把握价格趋势。通过Python和C++两种编程语言实现简单移动平均(SMA),展示了数据处理的具体方法。Python代码借助`pandas`库轻松计算5日SMA,而C++代码则通过高效的数据处理展示了SMA的计算过程。集思录平台提供了详尽且及时的可转债数据,助力投资者结合算法与社区讨论,做出更明智的投资决策。掌握这些工具和技术,有助于在复杂多变的金融市场中挖掘更多价值。
22 12
|
2天前
|
JavaScript 前端开发 Android开发
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
34 13
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
6天前
|
数据采集 数据安全/隐私保护 Python
从零开始:用Python爬取网站的汽车品牌和价格数据
在现代化办公室中,工程师小李和产品经理小张讨论如何获取懂车帝网站的汽车品牌和价格数据。小李提出使用Python编写爬虫,并通过亿牛云爬虫代理避免被封禁。代码实现包括设置代理、请求头、解析网页内容、多线程爬取等步骤,确保高效且稳定地抓取数据。小张表示理解并准备按照指导操作。
从零开始:用Python爬取网站的汽车品牌和价格数据
|
1月前
|
人工智能 JavaScript 前端开发
一段 JavaScript 代码,集成网站AI语音助手
根据本教程,只需通过白屏化的界面操作,即可快速构建一个专属的AI智能体。
|
1月前
|
数据采集 Web App开发 数据可视化
Python用代理IP获取抖音电商达人主播数据
在当今数字化时代,电商直播成为重要的销售模式,抖音电商汇聚了众多达人主播。了解这些主播的数据对于品牌和商家至关重要。然而,直接从平台获取数据并非易事。本文介绍如何使用Python和代理IP高效抓取抖音电商达人主播的关键数据,包括主播昵称、ID、直播间链接、观看人数、点赞数和商品列表等。通过环境准备、代码实战及数据处理与可视化,最终实现定时任务自动化抓取,为企业决策提供有力支持。
|
2月前
|
数据采集 存储 XML
python实战——使用代理IP批量获取手机类电商数据
本文介绍了如何使用代理IP批量获取华为荣耀Magic7 Pro手机在电商网站的商品数据,包括名称、价格、销量和用户评价等。通过Python实现自动化采集,并存储到本地文件中。使用青果网络的代理IP服务,可以提高数据采集的安全性和效率,确保数据的多样性和准确性。文中详细描述了准备工作、API鉴权、代理授权及获取接口的过程,并提供了代码示例,帮助读者快速上手。手机数据来源为京东(item.jd.com),代理IP资源来自青果网络(qg.net)。
|
2月前
|
数据采集 Web App开发 监控
Python爬虫:爱奇艺榜单数据的实时监控
Python爬虫:爱奇艺榜单数据的实时监控
|
前端开发 JavaScript
一个奇妙的在线JavaScript学习网站
今天来介绍一个优秀的在线交互学习JavaScript的网站,叫做Try JavaScript。点击链接,我们可以看到如下一个界面,它提示我们在双引号中输入自己的名字,然后按回车。
764 0
|
3月前
JS+CSS3文章内容背景黑白切换源码
JS+CSS3文章内容背景黑白切换源码是一款基于JS+CSS3制作的简单网页文章文字内容背景颜色黑白切换效果。
34 0
|
3月前
|
JavaScript 前端开发
JavaScript中的原型 保姆级文章一文搞懂
本文详细解析了JavaScript中的原型概念,从构造函数、原型对象、`__proto__`属性、`constructor`属性到原型链,层层递进地解释了JavaScript如何通过原型实现继承机制。适合初学者深入理解JS面向对象编程的核心原理。
50 1
JavaScript中的原型 保姆级文章一文搞懂

热门文章

最新文章

  • 1
    当面试官再问我JS闭包时,我能答出来的都在这里了。
    47
  • 2
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    29
  • 3
    Node.js 中实现多任务下载的并发控制策略
    34
  • 4
    【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
    26
  • 5
    【JavaScript】深入理解 let、var 和 const
    49
  • 6
    【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
    47
  • 7
    【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
    57
  • 8
    【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
    57
  • 9
    如何通过pm2以cluster模式多进程部署next.js(包括docker下的部署)
    72
  • 10
    【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
    57
  • 推荐镜像

    更多