Python 如何使刮痧蜘蛛更快
我正在抓取的xml提要大约有1000个条目。我想知道是否有一种方法可以分割负载,或者有另一种方法可以显著减少运行时间。目前迭代下面链接中的所有xml需要两分钟。非常感谢您的任何建议 例如:Python 如何使刮痧蜘蛛更快,python,xml,web-scraping,scrapy,Python,Xml,Web Scraping,Scrapy,我正在抓取的xml提要大约有1000个条目。我想知道是否有一种方法可以分割负载,或者有另一种方法可以显著减少运行时间。目前迭代下面链接中的所有xml需要两分钟。非常感谢您的任何建议 例如: 所有项目的两分钟运行时间。使用Scrapy有什么方法可以让它更快?尝试增加并发\u请求、每个\u域的并发\u请求、每个\u IP的并发\u请求,例如: 但请记住,除了高速外,它还可能导致较低的成功率,就像许多429响应、禁止等一样。我在本地测试了以下spider: 从scrapy.spider导入XMLFee
所有项目的两分钟运行时间。使用Scrapy有什么方法可以让它更快?尝试增加并发\u请求、每个\u域的并发\u请求、每个\u IP的并发\u请求,例如:
但请记住,除了高速外,它还可能导致较低的成功率,就像许多429响应、禁止等一样。我在本地测试了以下spider: 从scrapy.spider导入XMLFeedSpider 类MySpiderXMLFeedSpider: 名称='测试' 允许的_域=['www.cityblueshop.com'] 起始URL=['https://www.cityblueshop.com/sitemap_products_1.xml'] 名称空间=['n','http://www.sitemaps.org/schemas/sitemap/0.9'] itertag='n:url' 迭代器='xml' def parse_nodeself,响应,节点: 产生{'url':node.xpath'.//n:loc/text.get} 运行不到3秒,包括Scrapy core启动和所有操作
请确保时间没有花在其他地方,例如,在导入项目子类的学习模块中。所有内容都在同一页面上,并且只是通过该页面进行解析,这只是主xml页面oops需要的一个请求,我的错误,误读。在这种情况下,是的,这些设置是无用的,对不起。
from scrapy.spiders import XMLFeedSpider
from learning.items import TestItem
class MySpider(XMLFeedSpider):
name = 'testing'
allowed_domains = ['www.cityblueshop.com']
start_urls = ['https://www.cityblueshop.com/sitemap_products_1.xml']
namespaces = [('n', 'http://www.sitemaps.org/schemas/sitemap/0.9')]
itertag = 'n:url'
iterator = 'xml'
def parse_node(self, response, node):
item = TestItem()
item['url'] = node.xpath('.//n:loc/text()').extract()
return item