繁体   English   中英

Scrapy-在爬网时访问数据并随机更改用户代理

[英]Scrapy - access data while crawling and randomly change user agent

当scrapy爬行时是否可以访问数据? 我有一个脚本,该脚本可找到特定的关键字并将该关键字写在.csv以及找到它的链接中。 但是,我必须等待scrapy完成抓取,当完成抓取后,它实际上会在.csv文件中输出数据

我还尝试随机更改我的用户代理,但是它不起作用。 如果不允许我同时提出两个问题,我会将其作为一个单独的问题发布。

 #!/usr/bin/env python # -*- coding: utf-8 -*- from scrapy.spiders import Spider from scrapy import log from FinalSpider.items import Page from FinalSpider.settings import USER_AGENT_LIST from FinalSpider.settings import DOWNLOADER_MIDDLEWARES import random import telnetlib import time class FinalSpider(Spider): name = "FinalSpider" allowed_domains = ['url.com'] start_urls = ['url.com=%d' %(n) for n in xrange(62L, 62L)] def parse(self, response): item = Page() item['URL'] = response.url item['Stake'] = ''.join(response.xpath('//div[@class="class"]//span[@class="class" or @class="class"]/text()').extract()) if item['cur'] in [u'50,00', u'100,00']: return item # 30% useragent change class RandomUserAgentMiddleware(object): def process_request(self, request, spider): if random.choice(xrange(1,100)) <= 30: log.msg('Changing UserAgent') ua = random.choice(USER_AGENT_LIST) if ua: request.headers.setdefault('User-Agent', ua) log.msg('>>>> UserAgent changed') 

您没有义务将收集到的项目(也称为“数据”)输出到csv文件中,只能使用以下命令进行抓取:

scrapy crawl myspider

这会将日志输出到终端,但是为了将项目仅存储到csv文件中,我假设您正在执行以下操作:

scrapy crawl myspider -o items.csv

现在,如果您要存储日志和项目,建议您将其放入settings.py文件中:

LOG_FILE = "logfile.log"

现在,您可以在Spider运行时仅查看该文件的情况下看到一些东西。

对于您对randomuseragent的问题,请检查如何激活易用的中间件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM