selenium 不加载图片设置 selenium集成到Scrapy

selenium不加载图片

selenium 不加载图片设置 selenium集成到Scrapy_第1张图片
selenium不加载图片代码

selenium集成到Scrapy


1. 自定义一个middlewares

selenium 不加载图片设置 selenium集成到Scrapy_第2张图片
自定义的middleware


2. 在settings中设置middlewares

settings中的设置


3. 但是每次启动都会启动Chrome,如何解决这个问题呢,在这里,我们把browser写进类里,这样每次请求都是同一个browser

selenium 不加载图片设置 selenium集成到Scrapy_第3张图片
设置browser


4. 但是又出现了一个问题,在爬虫关闭的时候不会自动关掉Chrome,这是一个很大的隐患。如何解决这个问题呢?

我们可以通过吧browser放到spider中,每个spider一个browser,有利于并发。使用信号量,当spider退出时使用browser.close()

selenium 不加载图片设置 selenium集成到Scrapy_第4张图片
spider


selenium 不加载图片设置 selenium集成到Scrapy_第5张图片
middlewares


5. 值得说的是,scrapy是一个异步的请求,而上面使用Chrome是同步的,使性能下降,如何使之也变成异步的呢?实现方法是重写一个middlewares,具体不在这里讨论,有兴趣的读者可以自己到Githut上查找相关的方法。


6. Chrome是必须有界面才能访问,那么如何无界面访问呢?

首先,要安装一个pyvirtualdisplay,好像只有在Linux下才行,Windows下不支持

selenium 不加载图片设置 selenium集成到Scrapy_第6张图片
安装pyvirtualdisplay
selenium 不加载图片设置 selenium集成到Scrapy_第7张图片
代码示例

你可能感兴趣的:(selenium 不加载图片设置 selenium集成到Scrapy)