相信大家在爬取一些数据时会经常会遇到延迟加载的页面(例如某东),这就会造成所写的爬虫程序不能完整的抓取到整个页面的数据,下面就来介绍一下如何解决此类问题。
若想让页面显示完整须用代码模拟鼠标向下滚动的动作,Selenium就完全可以胜任这个任务,Selenium是免费的分布式的自动化测试工具,支持多平台:windows、linux、MAC ,支持多浏览器:ie、ff、safari、opera、chrome,多语言C、 java、ruby、python、或都是C#。详细了解请点击下面的链接。selenium中文网 | selenium安装、selenium使用、selenium中文、selenium下载www.selenium.org.cn
首先在Scrapy的爬虫主文件中导入Selenium包,具体代码如下:
from selenium import webdriver
class TestSpider(Spider):
name = 'test'
def __init__(self):
self.browser = webdriver.Chrome()
self.browser.set_page_load_timeout(30)
这仅仅是让Selenium导入到Scarpy中,大多数情况下我们所要抓取的网页都是多页的,而且我们也需要在Selenium执行完向下滚动页面的操作后我们再执行爬取整个页面的代码才能达到预期效果,所以我们需要将Selenium操作页面的代码放入到Scrapy的middlewares.py(中间件)文件中。
将Selenium滚动页面的代码放入Scrapy的middlewares.py文件中
from selenium.common.exceptions