根据页面响应获取动态页面信息
2016-08-31
之前写了一篇文章写了如何用splash结合scrapy爬取动态页面的信息,不可否认,splash的功能是很强大的,能够方便的获得加载js的页面,但是在测试的过程中我发现了splash的一些问题。
- 由于网络的不稳定导致页面的响应时间可能非常长,因此整体爬虫的时间会大幅延长,且不可控。并且因此导致更新时间间隔加长。
- 长时间运行splash对服务器压力较大,加上由响应时间过长造成的任务积压,服务器会变得卡顿和不稳定。
在经过对网站功能和服务器资源的分析后,我摒弃使用splash,转而对每个需要访问的页面通过浏览器工具分析其页面的响应。因为我们所需爬取的页面数量是有限的,但是我们需要高频率地去访问这些页面,因此要尽可能减少爬取过程中消耗的时间和资源,把工作做在前面。可以利用Chrome或者Firefox的Debug工具,在network选项里查找页面载入时发送了哪些请求,然后找到我们需要的内容查看Request URL. 这样,我们只需要把scrapy里爬取的网页地址换成这个URL,然后根据响应信息的格式(通常是json)进行处理。如此一来,整个爬取页面的过程会大大加快,而服务器也能稳定运行了。