我正在使用 Scrapy 爬虫来爬取超过 10 万页的网站。在这种情况下,速度是最大的问题。今天我注意到这hxs.select('//*').re('something')
比hxs.select('//script/text()').re('something')
. 哪位高手能解释一下为什么?
据我了解,无论我使用什么 xpath 选择器,爬虫都应该下载整个页面。所以xpath根本不应该影响速度。
非常感谢任何提示。
我正在使用 Scrapy 爬虫来爬取超过 10 万页的网站。在这种情况下,速度是最大的问题。今天我注意到这hxs.select('//*').re('something')
比hxs.select('//script/text()').re('something')
. 哪位高手能解释一下为什么?
据我了解,无论我使用什么 xpath 选择器,爬虫都应该下载整个页面。所以xpath根本不应该影响速度。
非常感谢任何提示。
这与下载速度无关。
XPath//*
选择整个页面。XPath//script/text()
只选择脚本元素内的文本。所以当然第二个更快,因为用re()
调用搜索的文本更少!
恐怕您可能会在整个文档中寻找“某些东西”,因此您可能仍应使用hxs.select('//*').re('something')
.
text()
关于速度问题:答案是,如果您在 4k 大的文档中查找“某物”一词,那么在该文本中查找该词之后,过滤文档当然需要更长的时间。
XPath对爬虫速度肯定有影响,爬虫下载页面,但是Xpath处理爬虫下载的Html。所以如果页面很大,那么 xpath 将需要时间来处理整个 Html。