爬虫爬取js渲染网站的思路
如何辨别哪些网站时js渲染的网站?使用requests库访问得到网页文本是否与浏览器得到的网页文本一致,若不一致(可能会存在因浏览器不同,导致不同结构的细微差异),网站多多少少存在js渲染的情况。如何爬取js渲染的网站呢?在这里我提供三种思路:1、使用 selenium pyppeteer splash等等模拟浏览器的方式去爬取,这是最便捷的方法,缺点就是耗时比较慢,但胜在渲染无敌,xpa...
·
如何辨别哪些网站时js渲染的网站?
使用requests库访问得到网页文本是否与浏览器得到的网页文本一致,若不一致(可能会存在因浏览器不同,导致不同结构的细微差异),网站多多少少存在js渲染的情况。
如何爬取js渲染的网站呢?
在这里我提供三种思路:
1、使用 selenium pyppeteer splash等等模拟浏览器的方式去爬取,这是最便捷的方法,缺点就是耗时比较慢,但胜在渲染无敌,xpath直接提取.一般来说对速度要求不太高的话,可以采取这种方式.
预留坑:介绍selenium pyppeteer splash的使用教程.
2、去网页文本里或者api找到你所要的参数。那么问题来了,不是说js渲染的吗?怎么网页文本里还有我们要的参数呢?容我解释:一般前端程序员会有两种做法,(1)把参数组装成json藏在html文本当中,(2)请求API得到json,所以当你使用xpath的时候,是解析不到此参数的。但是在浏览器中它可以通过加载的js把参数渲染进html的元素中。碰到这种情况可以使用正则来提取。优点是:不使用模拟浏览器、不破解js,速度快。缺点是:你需要仔细阅读requests库爬取回来的网页文本或者仔细查看网络通信列表看是否有请求api的情况,然后编写正则或者请求API然后json.loads()提取。
预留坑:找到需要加载json或没有结构化的网站.
3、使用前端提供的js片段,在本地跑渲染成我们所需要的数据。优点:速度快。缺点:需要爬虫程序员懂js,稍微懂调试chrome,因为找到js的方法,不熟练或者不明白的话,会耗费大量的时间,而且可能一无所获直至放弃.
预留坑:找到破解js的网站.
PS:文章没有写完待续,为什么写一点就不写了?因为这样后面我才会强迫自己填上这个坑,不然都不会写.后面我会举一些例子,来充实文章.
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)