博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第三百五十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—chrome谷歌浏览器无界面运行、scrapy-splash、splinter...
阅读量:6217 次
发布时间:2019-06-21

本文共 2321 字,大约阅读时间需要 7 分钟。

第三百五十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—chrome谷歌浏览器无界面运行、scrapy-splash、 splinter

 

1、chrome谷歌浏览器无界面运行

chrome谷歌浏览器无界面运行,主要运行在Linux系统,windows系统下不支持

chrome谷歌浏览器无界面运行需要一个模块,pyvirtualdisplay模块

需要先安装pyvirtualdisplay模块

Display(visible=0, size=(800, 600))设置浏览器,visible=0表示不显示界面,size=(800, 600)表示浏览器尺寸

# -*- coding: utf-8 -*-import scrapyfrom scrapy.http import Request,FormRequestfrom selenium import webdriver                  # 导入selenium模块来操作浏览器软件from scrapy.xlib.pydispatch import dispatcher   # 信号分发器from scrapy import signals                      # 信号class PachSpider(scrapy.Spider):                            #定义爬虫类,必须继承scrapy.Spider    name = 'pach'                                           #设置爬虫名称    allowed_domains = ['www.taobao.com']                    #爬取域名    def __init__(self):                                                                                 #初始化        from pyvirtualdisplay import Display        display = Display(visible=0, size=(800, 600))        display.start()        self.browser = webdriver.Chrome(executable_path='H:/py/16/adc/adc/Firefox/chromedriver.exe')    #创建谷歌浏览器对象        super(PachSpider, self).__init__()                                                              #设置可以获取上一级父类基类的,__init__方法里的对象封装值        dispatcher.connect(self.spider_closed, signals.spider_closed)       #dispatcher.connect()信号分发器,第一个参数信号触发函数,第二个参数是触发信号,signals.spider_closed是爬虫结束信号        #运行到此处时,就会去中间件执行,RequestsChrometmiddware中间件了    def spider_closed(self, spider):                                        #信号触发函数        print('爬虫结束 停止爬虫')        self.browser.quit()                                                 #关闭浏览器    def start_requests(self):    #起始url函数,会替换start_urls        return [Request(            url='https://www.taobao.com/',            callback=self.parse        )]    def parse(self, response):        title = response.css('title::text').extract()        print(title)

 注意:Linux系统下会出现错误

报错:easyprocess.EasyProcessCheckInstalledError: cmd=['Xvfb', '-help'] OSError=[Errno 2] No such file or directory

需要两个步骤解决

  1.执行命令:sudo apt-get install xvfb    安装xvfb软件

  2.执行命令:pip install xvfbwrapper   安装xvfbwrapper模块

 

 

以下只是提到一下,前面讲的selenium模块操作浏览器已经够用了

2、scrapy-splash,也是scrapy获取动态网页的方案,这里就不介绍了,详情:https://github.com/scrapy-plugins/scrapy-splash

3、splinter,是一个操作浏览器的模块 详情:https://github.com/cobrateam/splinter

 

转载地址:http://xasja.baihongyu.com/

你可能感兴趣的文章
MPAndroidChart 教程:Y轴 YAxis
查看>>
JS进阶篇--JS数组reduce()方法详解及高级技巧
查看>>
ios 开发 错误汇总
查看>>
2018年如何快速学Java
查看>>
PostgreSQL 10.1 手册_部分 IV. 客户端接口_第 33 章 libpq - C 库
查看>>
阿里云OSS NET SDK 引用示范程序
查看>>
一条咸鱼的养成
查看>>
基于 Laravel 的在线点播系统 MeEdu v1.0 版本上线
查看>>
Go基础系列:struct和嵌套struct
查看>>
【nodejs】让nodejs像后端mvc框架(asp.net mvc )一样处理请求--路由限制及选择篇(2/8)【route】...
查看>>
WPFの阴影效果
查看>>
PostgreSQL 10.1 手册_部分 II. SQL 语言_第 14 章 性能提示_14.3. 用显式JOIN子句控制规划器...
查看>>
VS生成Cordova for Android应用之Gradle
查看>>
使用IB_DESIGNABLE与IBInspectable实现可在SB编辑border与corner的Button
查看>>
Android&Java面试题大全—金九银十面试必备
查看>>
普林斯顿大学算法公开课笔记——选择排序
查看>>
Hikyuu 1.1.2 发布,量化交易研究框架
查看>>
Android ADB命令的使用
查看>>
Python全栈 Web(Flask框架、CRUD、聚合分组)
查看>>
【最佳实践】使用BYOK密钥加密OSS中对象
查看>>