动态网页抓取(图书排行榜_热门图书_新书-图书【畅销正版折扣】-京东)

优采云 发布时间: 2022-01-14 02:35

  动态网页抓取(图书排行榜_热门图书_新书-图书【畅销正版折扣】-京东)

  写了一段时间的爬虫,遇到了和题主类似的问题,这里就简单写一下。

  一、对于动态页面,一般采用两种比较简单的方法。

  首先是直接解析请求,定位到数据所在的JS文件,然后直接请求获取数据。

  比如京东上的商品价格,源码中一般是查不到的。这个比较简单,打开Network,总共只有几个请求。以图书排名网页(图书排名_热门图书_新书-图书【畅销正版折扣】-京东)为例。

  先找到文件,然后查看请求的地址,添加一个UA直接请求即可。

  

  京东

  

  京东

  然后对字符串进行处理,将其转换为 json 以提取数据。这个比较简单,不再赘述。

  第二种方式是直接使用selenium+PhantomJS。一般直接用来获取源码(这里获取的一般收录所有数据),然后解析获取和静态页面一样。因为这种方法比第一种方法慢很多,所以一般只用来获取源代码。与第一种方法相比,这种方法更通用,因为一些动态加载的数据很难通过JS直接找到。

  二、模拟登录的两种方式

  关于模拟登录,也是很头疼的。为简单起见,一般只考虑两种方法。

  第一个是加密的网站,直接POST数据即可。比如通用教务系统或者豆瓣orz...以登录豆瓣并获取签名为例,代码放在Github上,可以参考下。这里第一次登录的输出如下(因为没有存储cookie文件,所以会重新POST登录):

  

  再运行一次,就可以直接用cookie登录了:

  

  二是涉及登录加密的网站,如新浪微博、QQ区、微信等。比较麻烦的方法是破解登录的加密算法,然后直接POST数据登录。像我这样的人喜欢用selenium,然后记录cookies……具体来说,我是这样写了两个爬虫,一个来自QQ空间,一个来自微信文章,主题可以看下图。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线