Scrapy
今夜睡火星
这个作者很懒,什么都没留下…
展开
-
Scrapy请求丢失情况
请求丢失场景: 在项目运行的过程中,Ctrl+C 主动终止进程,或爬虫代码异常等程序非正常结束的情况下,获取数据的过程没有完成,但某个request对象已经从队列中取出。此时fp指纹集合中已经存在了该指纹,再次启动该项目时,因为设置了请求去重,无法再发出该请求。解决方案: 1.添加一个请求备份容器。2.给request对象设置一个重试次数的属性。...原创 2018-08-11 09:59:59 · 1838 阅读 · 0 评论 -
scrapy使用selenium时爬虫关闭浏览器的方法
这里是官方提供的最新的方法from scrapy import signals# 此为官方推荐的信号使用方法,用来关闭浏览器@classmethoddef from_crawler(cls, crawler, *args, **kwargs): spider = super(YourSpider, cls).from_crawler(crawler, *args, **kwargs...原创 2019-06-06 10:16:05 · 1875 阅读 · 0 评论 -
scrapy.Request构造请求时,无法得到数据
这可能是因为没有数据的链接被过滤,会影响下边数据的获取。可尝试在参数中添加dont_filter=Truescrapy.Request(url, self.parse, dont_filter=True)启用不过滤原创 2019-06-06 10:08:27 · 1711 阅读 · 2 评论 -
使用scrapy的ImagesPipeline在pipelines中下载图片
这是分类存储的代码示例from scrapy.pipelines.images import ImagesPipelinefrom scrapy import Requestclass ImagesrenamePipeline(ImagesPipeline): def get_media_requests(self, item, info): # 循环每一张图片...原创 2019-05-09 18:12:51 · 432 阅读 · 0 评论 -
从数据库中取出代理ip
def get_random_proxy(self): '''随机从IP数据库中读取proxy''' # 连接数据库 con = pymysql.connect( host='localhost', # 数据库所在地址URL user='root', # 用户名 passwo...原创 2019-04-30 14:37:29 · 442 阅读 · 0 评论 -
scrapy按照时间输出日志
1、在settings文件中设置import datetimeto_day = datetime.datetime.now()log_file_path = 'log文件夹的绝对路径/log_{}_{}_{}.log'.format(to_day.year, to_day.month,to_day.day)LOG_LEVEL = 'DEBUG' # 设置输出日志的等级,大于等于次等级的输...原创 2019-04-30 10:07:12 · 1209 阅读 · 0 评论 -
解决selenium报错unknown error: DevToolsActivePort file doesn't exist
添加代码opt = Options()opt.set_headless()opt.add_argument('--no-sandbox') # 让Chrome在root权限下跑opt.add_argument('--disable-dev-shm-usage')opt.add_argument('--headless')opt.add_argument('blink-setting...原创 2019-05-05 16:56:22 · 6005 阅读 · 0 评论 -
scrapy实现去重爬虫
# 导入异常处理模块from scrapy.exceptions import DropItemclass spiderNamePipeline(object): def __init__(self): #建立构造方法 self.title = set() #定义集合 def process_item(self, item...转载 2019-04-09 18:42:17 · 1111 阅读 · 0 评论 -
scrapy爬虫添加UA池和IP代理池
1.在setting中添加UA池和IP代理池# 1. 准备User-Agent列表, 在settings.py中USER_AGENT_LIST = ["Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET ...原创 2019-04-09 10:11:07 · 5331 阅读 · 0 评论 -
twisted.internet.error.TimeoutError错误的解决方法
少数链接会出现请求超时,当出现请求超时时,爬虫会自动重试三次,若超过180s且三次后仍没有得到数据,就会放弃请求出现twisted.internet.error.TimeoutError 错误。此时就出现了爬取失败的情况。原因:当网络无法满足在180s内下载完所有的请求数量,就会出现此类错误。解决办法:这里做个示例,具体情况具体分析1、降低同时请求的数量CONCURRENT_REQUEST...原创 2019-06-04 22:19:27 · 5557 阅读 · 1 评论