我可以在没有autothrottle的情况下保存数据,但是当我打开它时,我无法再保存json数据。
是否有使用CrawlerProcess的解决方案?不确定它是否是一个错误。
更新:
添加所有代码。
import scrapy
from scrapy.crawler import CrawlerProcess
class MySpider(scrapy.Spider):
name = None
start_urls = None
class Spider:
def __init__(self,parse,start_urls,**kwargs):
self.name = 'spider'
self.parse = parse
self.start_urls = start_urls
self.kwargs = kwargs.get('settings')
def run(self):
process = CrawlerProcess(self.kwargs)
MySpider.name = self.name
MySpider.start_urls = self.start_urls
MySpider.parse = self.parse
process.crawl(MySpider)
process.start()
FILE_NAME = 'my_data.json'
SETTINGS = {
'USER_AGENT': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)',
'FEED_FORMAT': 'json',
'FEED_URI': FILE_NAME,
'HTTPERROR_ALLOWED_CODES' : [x for x in range(200,600)],
'AUTOTHROTTLE_ENABLED':True,
'AUTOTHROTTLE_DEBUG':True,
'CONCURRENT_REQUESTS_PER_DOMAIN':5,
'DOWNLOAD_TIMEOUT':5,
'RANDOMIZE_DOWNLOAD_DELAY':True,
'DNS_TIMEOUT':5,}
def parse(self,response):
yield {
'url': response.url,
'status':response.status,
'redirects': response.request.meta.get('redirect_urls'),
}
s = Spider(parse=parse,
start_urls=START_URLS,
settings=SETTINGS)
s.run()
我继承了MySpider类,所以我可以用蜘蛛创建一个模块。