![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
scrapy
转身及不见
菜鸟一个,正在学习中,写博客是为了方便自己以后查找笔记,但也希望能帮助一些需要的人。
展开
-
scrapy数据库异步写入
项目名为jobbole, spiders中的代码块文件名为bole.py爬取网站为伯乐在线的最新文章pipelines.py代码# 数据库pymysql的commit()和execute()在提交数据时,都是同步提交至数据库,由于scrapy框架数据的解析是异步多线程的,所以scrapy的数据解析速度,要远高于数据的写入数据库的速度。如果数据写入过慢,会造成数据库写入的阻塞,影响数据...原创 2018-07-09 21:30:07 · 1327 阅读 · 1 评论 -
scrapy 架构文档
这是中文文档网址https://scrapy-chs.readthedocs.io/zh_CN/0.24/topics/architecture.html英文文档 https://doc.scrapy.org/en/latest/topics/architecture.html scrapy各部分之间的数据流向是如何交互:1>引擎将起始url构造成Reque...原创 2018-07-13 21:26:52 · 228 阅读 · 0 评论 -
ItemLoader对获取的数据提取和过滤步骤
1.在创建item_loader对象的时候,会执行item对象中input_processor和output_processor的初始化;2.在执行add_xpath、add_css、add_value函数的时候,会将提取得结果交给input_processor进行结果的处理,结果处理完以后暂时保存在item_loader中;3.等数据提取完毕,调用load_item()方法,执行output_p...原创 2018-07-13 21:30:15 · 642 阅读 · 0 评论 -
scrapy的url去重原理
1.需要将dont_filter设置为False开启去重,默认是True,没有开启去重;2.对于每一个url的请求,调度器都会根据请求得相关信息加密得到一个指纹信息,并且将指纹信息和set()集合中的指纹信息进行比对,如果set()集合中已经存在这个数据,就不在将这个Request放入队列中。如果set()集合中没有存在这个加密后的数据,就将这个Request对象放入队列中,等待被调度。...原创 2018-07-13 21:34:58 · 6158 阅读 · 2 评论 -
scrapy中间件request和response函数返回值
scrapy中间件中,处理request请求的函数,它的返回值有哪几种情况,分别有什么作用?Retuen None: 将请求交给后续的中间件进行处理;Return Request: 将请求交给调度器重新调度,并终止后续中间件的执行;Return Response: 终止后续中间件及下载器的执行,直接将Response交给引擎。Return Except: 抛出异常 scrapy中间件中,处理...原创 2018-07-14 10:44:38 · 6500 阅读 · 0 评论 -
发送邮件和scrapy结合
主要代码如下:spider中建立.py文件,我命名为emailtest.py# -*- coding: utf-8 -*-import scrapy, timefrom datetime import datetimefrom ..emailsend import EmailSendclass EmailtestSpider(scrapy.Spider): name = 'em...原创 2018-07-14 10:36:19 · 1287 阅读 · 0 评论 -
分布式爬虫配置(伯乐在线为例)
依赖环境:redis >=2.8scrapy >=1.1分布式爬虫:将一个项目拷贝到多台电脑上,同时爬取数据。1.必须保证所有电脑上的代码是相同的配置。2.在其中一台电脑上启动redis和MySQL的数据库服务。3.同时将所有的爬虫项目运行起来。4.在启动redis和MySQL的电脑上, 向redis中添加起始的url。q = queue()url = q.get...原创 2018-07-17 22:09:02 · 3646 阅读 · 1 评论 -
itemloader保存数据(伯乐在线为例)
代码如下:主要结构:# -*- coding: utf-8 -*-import scrapyfrom ..items import JobboleItemfrom urllib.parse import urljoinfrom scrapy.loader import ItemLoaderclass BoleSpider(scrapy.Spider): name...原创 2018-07-17 22:20:38 · 520 阅读 · 0 评论 -
url去重方案
url去重方案:1. 通过数据库进行url的去重,获取一条数据的时候,将url也保存到数据库中,在获取其他url的时候,先从数据库中查询是否存在这个url,如果存在就丢弃,反之就保存。效率太低。2. 通过set(),在内存中符url进行去重。 对内存的占用太高。eg:100000000条url * 50字符 * 2bytes /1024(KB)/1024(MB)/1024(GB) ...原创 2018-07-18 14:19:16 · 1021 阅读 · 0 评论