python爬虫之七_实践下载漫画之一

爬取了两个漫画网站,发现漫画网站防爬虫有如下共同点:
1.html页面带有一个date变量,data为加密的图片url数据;
2.data解密后得到的是该章节所有图片的url,即是一个list;
3.data的解码函数,是通过js执行后得到的,而产生解码函数的js代码是经过混淆的
4.产生的解码函数,一种是作为js内的函数来执行,另一种是单独存出来
5.所以漫画网站爬虫就两步:一:执行js找到解码函数;二:用解码函数解析data;
6.b站漫画反爬虫做的更好,一:禁止F12调试;二:html中看不到URL;待学习

一:爬虫腾讯动漫网 海贼王漫画
爬取漫画的难点:
1.图片的名字为随机字符串,无法由漫画中第一张图片的名字推得后面图片的名字;
2.异步,一个章节的所有图片在HTML中用List存放,且各图片的URL是逐渐加载的,滚轮滚到哪,该位置对应的图片才加载;

腾讯动漫:
网站特征
网站的坑:
1.代码混淆:
启发:
(1)对于开发者来说,代码混淆有好有坏,好处是破译难度变大,但由于并非是整个js文件都混淆了,所以混淆反倒标明了这段是核心代码,使得调试时更有目的性;
(2)对于被混淆的代码段,打断点,反复调试,看中间变量的值;找出目标数据是在哪一步出现的;
2.参数不清晰,网页加入随机数:window[nonce]
启发:
(1)如果经验丰富或者对JS熟悉,有些突然出现的变量,根据变量名以及值的结构能够看出变量是什么,如W=window,N=window[nonce]
(2)打断点看突然出现的参数的值,根据值的类型,判断是否能自己构建,
3.参数冗余,用完修改:
启发:对全局变量的监控,应该打断点分阶段输出其值,如页面加载最初、核心代码前后、页面加载完成,
启发:js是对html的操作,数据是不是都是通过html传来的,只不过是加密了,而js是对html中数据解密,得到真正有用的数据;
4.滚动条被设为空
启发:

Chrome的调试方法:
1.Chrome的控制台调试网页中的JS代码;
2.Chrome的控制台执行网页中的JS代码;

Node.js执行本地js文件的方法:

方法一:模拟浏览器
搜索资料历程:先接触到Selenium,后来看到Puppeteer,最后落到Pyppeteer
三种工具都是启动浏览器,模拟人的操作,

方法二:反混淆获取URL
搜索资料历程:先接触到execjs,后来看到js2py
参考:
https://www.jianshu.com/p/2da6f6ad01f0
https://blog.csdn.net/z_kqiang/article/details/88621144

方法三:本地缓存提取
感觉可以和按键精灵联合使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,这是一个关于Python爬虫获取新浪新闻信息的问题。首先,我们需要先了解一下爬虫的基本概念和工作原理。 爬虫是一种自动化程序,可以模拟人类对网站的访问并自动抓取数据。它可以通过网络上的URL链接来获取网页内容,并将其转换成结构化的数据,供后续的数据分析或其他用途。 下面是一个简单的Python爬虫程序,可以用来获取新浪新闻的信息: ```python import requests from bs4 import BeautifulSoup url = 'https://news.sina.com.cn/' r = requests.get(url) r.encoding = 'utf-8' soup = BeautifulSoup(r.text, 'html.parser') news_list = soup.find_all('a', class_='news-item') for news in news_list: print(news.text.strip()) print(news['href']) ``` 这个程序使用了Python的requests库和BeautifulSoup库来获取新浪新闻的信息。首先,我们需要将新浪新闻的URL链接赋值给变量url,然后使用requests库来发送HTTP请求,获取网页内容。接着,我们需要使用BeautifulSoup库来解析网页内容,提取出我们需要的信息。在这个例子中,我们使用了find_all方法来查找所有class为news-item的a标签,并使用循环打印出每个新闻的标题和链接。 当然,这只是一个简单的例子,实际上,爬虫的应用非常广泛,可以用来获取各种类型的数据,例如文本、图像、音频等等。但是,请注意,爬虫的使用需要遵守法律法规和道德规范,不要进行恶意攻击或侵犯他人隐私。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值