为您找到搜索结果:815个
三十四 Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy信号详解
信号一般使用信号分发器dispatcher.connect(),来设置信号,和信号触发函数,当捕获到信号时执行一个函数dispatcher.connect()信号分发器,第一个参数信号触发函数,第二个参数是触发信号, 以下是各种信号signals.engine_started当Scrapy引擎启动爬取时发送该信号。该信号支持返回deferreds。signals.engine_stopped当Scrapy引擎停止时发送该信号(例如,爬取结束)。该信号支持返回deferreds。 signals.item_scraped(item,response,spider)当item被爬取,并通过所有ItemPipeline后(没有被丢弃(dropped),发送该信号。该信号支持返回deferreds。 参数: item(Item对象)–爬取到的item spider(Spider对象)–爬取item的spider response(Response对象)–提取item的responsesignals.item_dropped(ite...
三十三 Python分布式爬虫打造搜索引擎Scrapy精讲—数据收集(Stats Collection)
Scrapy提供了方便的收集数据的机制。数据以key/value方式存储,值大多是计数值。该机制叫做数据收集器(StatsCollector),可以通过CrawlerAPI的属性stats来使用无论数据收集(statscollection)开启或者关闭,数据收集器永远都是可用的。因此您可以import进自己的模块并使用其API(增加值或者设置新的状态键(statkeys))。该做法是为了简化数据收集的方法:您不应该使用超过一行代码来收集您的spider,Scrpay扩展或任何您使用数据收集器代码里头的状态。数据收集器的另一个特性是(在启用状态下)很高效,(在关闭情况下)非常高效(几乎察觉不到)。数据收集器对每个spider保持一个状态表。当spider启动时,该表自动打开,当spider关闭时,自动关闭。数据收集各种函数stats.set_value('数据名称',数据值)设置数据stats.inc_value('数据名称')增加数据值,自增1stats.max_value('数据名称',value)当新的值比原来的值大时设置数据stats.min_value('数据名称'...
三十二 Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy的暂停与重启
scrapy的每一个爬虫,暂停时可以记录暂停状态以及爬取了哪些url,重启时可以从暂停状态开始爬取过的URL不在爬取实现暂停与重启记录状态1、首先cd进入到scrapy项目里2、在scrapy项目里创建保存记录信息的文件夹3、执行命令: scrapycrawl爬虫名称-sJOBDIR=保存记录信息的路径 如:scrapycrawlcnblogs-sJOBDIR=zant/001 执行命令会启动指定爬虫,并且记录状态到指定目录爬虫已经启动,我们可以按键盘上的ctrl+c停止爬虫 停止后我们看一下记录文件夹,会多出3个文件其中的requests.queue文件夹里的p0文件就是URL记录文件,这个文件存在就说明还有未完成的URL,当所有URL完成后会自动删除此文件当我们重新执行命令:scrapycrawlcnblogs-sJOBDIR=zant/001 时爬虫会根据p0文件从停止的地方开始继续爬取, ...
三十一 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-*-importscrapyfromscrapy.httpimportRequest,FormRequestfromseleniumimportwebdriver#导入selenium模块来操作浏览器软件fromscrapy.xlib.pydispatchimportdispatcher#信号分发器fromscrapyimportsignals#信号classPachSpider(scrapy.Spider):#定义爬虫类,必须继承scrapy.Spidername='pach'#设置爬虫名称allowed_domains=['www.taobao.com...
三十 Python分布式爬虫打造搜索引擎Scrapy精讲—将selenium操作谷歌浏览器集成到scrapy中
1、爬虫文件dispatcher.connect()信号分发器,第一个参数信号触发函数,第二个参数是触发信号,signals.spider_closed是爬虫结束信号#-*-coding:utf-8-*-importscrapyfromscrapy.httpimportRequest,FormRequestfromseleniumimportwebdriver#导入selenium模块来操作浏览器软件fromscrapy.xlib.pydispatchimportdispatcher#信号分发器fromscrapyimportsignals#信号classPachSpider(scrapy.Spider):#定义爬虫类,必须继承scrapy.Spidername='pach'#设置爬虫名称allowed_domains=['www.taobao.com']#爬取域名def__init__(self):#初始化self.browser=webdriver.Chrome(executable_path='H:/py/16/adc/adc/Firefox/chromedriver.exe')...
二十九 Python分布式爬虫打造搜索引擎Scrapy精讲—selenium模块是一个python操作浏览器软件的一个模块,可以实现js动态网页请求
selenium模块selenium模块为第三方模块需要安装,selenium模块是一个操作各种浏览器对应软件的api接口模块selenium模块是一个操作各种浏览器对应软件的api接口模块,所以还得需要下载对应浏览器的操作软件操作原理是:selenium模块操作浏览器操作软件,浏览器操作软件操作浏览器Selenium2.0适用于以下浏览器 GoogleChrome InternetExplorer7,8,9,10,11 Firefox Safari Opera HtmlUnit phantomjs Android iOS Selenium的核心,就是用js控制浏览器下载对应浏览器的浏览器操作软件 Chrome:https://sites.google.com/a/chromium.org/chromedriver/downloadsEdge:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/Firefox:https://github.com/mo...
二十八 Python分布式爬虫打造搜索引擎Scrapy精讲—cookie禁用、自动限速、自定义spider的settings,对抗反爬机制
cookie禁用就是在Scrapy的配置文件settings.py里禁用掉cookie禁用,可以防止被通过cookie禁用识别到是爬虫,注意,只适用于不需要登录的网页,cookie禁用后是无法登录的settings.py里禁用掉cookie禁用COOKIES_ENABLED =False禁用cookie#Disablecookies(enabledbydefault)COOKIES_ENABLED=False 自动限速Scrapy默认没有限速的,只要遇到URL就访问,没有间隙自动限速(AutoThrottle)扩展settings.py里设置DOWNLOAD_DELAY =下载器在下载同一个网站下一个页面前需要等待的时间。该选项可以用来限制爬取速度,减轻服务器压力。同时也支持小数(单位秒)#Configureadelayforrequestsforthesamewebsite(default:0)#Seehttp://scrapy.readthedocs.org/en/latest/topics/settings.html#download-delay#S...
二十七 Python分布式爬虫打造搜索引擎Scrapy精讲—通过自定义中间件全局随机更换代理IP
设置代理ip只需要,自定义一个中间件,重写process_request方法,request.meta['proxy'] ="http://185.82.203.146:1080" 设置代理IP中间件,注意将中间件注册到配置文件里去fromadc.daili_ip.sh_yong_ip.sh_yong_ipimportsui_ji_hq_ipfromfake_useragentimportUserAgent#导入浏览器用户代理模块classRequestsUserAgentmiddware(object):#自定义浏览器代理中间件#中间件随机更换Requests请求头信息的User-Agent浏览器用户代理def__init__(self,crawler):super(RequestsUserAgentmiddware,self).__init__()#获取上一级父类基类的,__init__方法里的对象封装值self.ua=UserAgent()#实例化浏览器用户代理模块类self.ua_type=crawler.settings.get('RANDOM_UA_TY...
二十六 Python分布式爬虫打造搜索引擎Scrapy精讲—通过downloadmiddleware中间件全局随机更换user-agent浏览器用户代理
downloadmiddleware介绍中间件是一个框架,可以连接到请求/响应处理中。这是一种很轻的、低层次的系统,可以改变Scrapy的请求和回应。也就是在Requests请求和Response响应之间的中间件,可以全局的修改Requests请求和Response响应 UserAgentMiddleware()方法,默认中间件源码里downloadmiddleware里的useragent.py下的UserAgentMiddleware()方法,默认中间件我们可以从源码看到当Requests请求时默认的User-Agent是Scrapy,这个很容易被网站识别而拦截爬虫 我们可以修改默认中间件UserAgentMiddleware()来随机更换Requests请求头信息的User-Agent浏览器用户代理第一步、在settings.py配置文件,开启中间件注册DOWNLOADER_MIDDLEWARES={}将默认的将默认的UserAgentMiddleware设置为None,或者设置成最大就最后执行,这样我们自定义的中间件修改默认的user_agent...
二十五 Python分布式爬虫打造搜索引擎Scrapy精讲—Requests请求和Response响应介绍
Requests请求Requests请求就是我们在爬虫文件写的Requests()方法,也就是提交一个请求地址,Requests请求是我们自定义的Requests()方法提交一个请求 参数: url= 字符串类型url地址 callback=回调函数名称 method=字符串类型请求方式,如果GET,POST headers=字典类型的,浏览器用户代理 cookies=设置cookies meta=字典类型键值对,向回调函数直接传一个指定值 encoding=设置网页编码 priority=默认为0,如果设置的越高,越优先调度 dont_filter=默认为False,如果设置为真,会过滤掉当前url #-*-coding:utf-8-*-importscrapyfromscrapy.httpimportRequest,FormRequestimportreclassPachSpider(scrapy.Spider):#定义爬虫类,必须继承scrapy.Spidername='pach'#设置爬虫名称allowed_domains=['www.l...
二十四 Python分布式爬虫打造搜索引擎Scrapy精讲—爬虫和反爬的对抗过程以及策略—scrapy架构源码分析图
1、基本概念 2、反爬虫的目的 3、爬虫和反爬的对抗过程以及策略 scrapy架构源码分析图 ...
二十三 Python分布式爬虫打造搜索引擎Scrapy精讲—craw母版l创建自动爬虫文件—以及 scrapy item loader机制
用命令创建自动爬虫文件创建爬虫文件是根据scrapy的母版来创建爬虫文件的scrapygenspider-l 查看scrapy创建爬虫文件可用的母版Availabletemplates:母版说明 basic 创建基础爬虫文件 crawl 创建自动爬虫文件 csvfeed 创建爬取csv数据爬虫文件 xmlfeed 创建爬取xml数据爬虫文件创建一个基础母版爬虫,其他同理scrapygenspider -t 母版名称 爬虫文件名称 要爬取的域名 创建一个基础母版爬虫,其他同理如:scrapygenspider-t crawl lagouwww.lagou.com 第一步,配置items.py接收数据字段default_output_processor=TakeFirst()默认利用ItemLoader类,加载items容器类填充数据,是列表类型,可以通过TakeFir...
二十二 Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy模拟登陆和知乎倒立文字验证码识别
第一步。首先下载,大神者也的倒立文字验证码识别程序下载地址:https://github.com/muchrooms/zheye注意:此程序依赖以下模块包 Keras==2.0.1 Pillow==3.4.2 jupyter==1.0.0 matplotlib==1.5.3 numpy==1.12.1 scikit-learn==0.18.1 tensorflow==1.0.1 h5py==2.6.0numpy-1.13.1+mkl 我们用豆瓣园来加速安以上依赖装如:pipinstall-ihttps://pypi.douban.com/simpleh5py==2.6.0如果是win系统,可能存在安装失败的可能,如果那个包安装失败,就到http://www.lfd.uci.edu/~gohlke/pythonlibs/ 找到win对应的版本下载到本地安装,如:pipinstallh5py-2.7.0-cp35-cp35m-win_amd64.whl 第二步,将者也的,验证码识别程序的zheye文件夹放到工程目录里 &n...
二十一 Python分布式爬虫打造搜索引擎Scrapy精讲—爬虫数据保存
注意:数据保存的操作都是在pipelines.py文件里操作的 将数据保存为json文件spider是一个信号检测#-*-coding:utf-8-*-#Defineyouritempipelineshere##Don'tforgettoaddyourpipelinetotheITEM_PIPELINESsetting#See:http://doc.scrapy.org/en/latest/topics/item-pipeline.htmlfromscrapy.pipelines.imagesimportImagesPipeline#导入图片下载器模块importcodecsimportjsonclassAdcPipeline(object):#定义数据处理类,必须继承objectdef__init__(self):self.file=codecs.open('shuju.json','w',encoding='utf-8')#初始化时打开json文件defprocess_item(self,item,spider):#process_item(item)为数据处理函数,接收...
二十 Python分布式爬虫打造搜索引擎Scrapy精讲—编写spiders爬虫文件循环抓取内容—meta属性返回指定值给回调函数—Scrapy内置图片下载器
编写spiders爬虫文件循环抓取内容Request()方法,将指定的url地址添加到下载器下载页面,两个必须参数, 参数: url='url' callback=页面处理函数 使用时需要yieldRequest() parse.urljoin()方法,是urllib库下的方法,是自动url拼接,如果第二个参数的url地址是相对路径会自动与第一个参数拼接#-*-coding:utf-8-*-importscrapyfromscrapy.httpimportRequest#导入url返回给下载器的方法fromurllibimportparse#导入urllib库里的parse模块classPachSpider(scrapy.Spider):name='pach'allowed_domains=['blog.jobbole.com']#起始域名start_urls=['http://blog.jobbole.com/all-posts/']#起始urldefparse(self,response):"""获取列表页的文章url地址,交给下载器"""#获取当前页文章urll...