scrapy
西门大盗
技能提升,分享价值
展开
-
python爬虫时用redis去重的多种方式(增量爬虫用到)
什么是增量爬虫爬虫过程中,常常要对目标网站的新数据进行抓取,遇到已经爬过的网页需要进行过滤。本文介绍用redis数据库的高效去重。逻辑是:方法一:把所有爬过的url都放在redis中,以后每次爬取链接之前,先把url添加进去,如果能添加进去,说明是没爬过的,如果添加不进去,说明该链接有爬取过。方法二:有时可以把请求的response进行哈希,然后保存,其他的逻辑同方法一。普通爬...原创 2020-03-06 17:44:02 · 2929 阅读 · 0 评论 -
scrapy报错解决[twisted.internet.error.TimeoutError: User timeout caused connection failure:]
在scrapy中遇到报错:twisted.internet.error.TimeoutError: User timeout caused connection failure:一般是设置了DOWNLOAD_TIMEOUT 之后,用了代理ip等等,就会出现这类报错。解决方法为:在middleware中,捕获这个报错,并返回request,让他重新请求这个对象先导入fro...原创 2019-05-05 10:41:03 · 11893 阅读 · 2 评论 -
scrapy 中,重写重试中间件 RetryMiddleware
from scrapy.contrib.downloadermiddleware.retry import RetryMiddlewarefrom fake_useragent import FakeUserAgentErrorclass FakeUserAgentErrorRetryMiddleware(RetryMiddleware): def process_except...原创 2019-05-05 10:10:34 · 3744 阅读 · 0 评论 -
scrapy 下爬取不同的网站,使用同一个settings时,设置自己的settings各个参数
比如有project1,和project2两个网站要爬取,第一个网站已经使用了settings中的配置,那么project2的配置需要在project2.py中自定义,如下,放到custom_settings 这个字典里: custom_settings = { 'ITEM_PIPELINES':{'quotetutorial.pipelines.MongoPipeline': 40...原创 2018-11-10 17:53:11 · 1641 阅读 · 0 评论 -
scrapy中将item输出为csv,json,xml,以及ftp传输
scrapy crawl project_name -o name.csvscrapy crawl project_name -o name.jsonscrapy crawl project_name -o name.xml这样是直接在爬取的同时,放进文件中远程ftp保存:scrapy crawl project_name -o ftp://user:pass@ftp.e...原创 2018-07-20 21:22:38 · 1602 阅读 · 0 评论 -
在scrapy中,将item存入json文件
假设将item存入article.json首先在pipeline中进行设置:import codecsimport jsonclass JsonWithEncodingPipeline(object): #自定义json文件的导出 def __init__(self):#初始化,打开文件 self.file = codecs.open('article.jso...原创 2018-05-29 17:32:13 · 2541 阅读 · 0 评论