0

我正在使用 Scrapy 爬虫来爬取超过 10 万页的网站。在这种情况下,速度是最大的问题。今天我注意到这hxs.select('//*').re('something')hxs.select('//script/text()').re('something'). 哪位高手能解释一下为什么?

据我了解,无论我使用什么 xpath 选择器,爬虫都应该下载整个页面。所以xpath根本不应该影响速度。

非常感谢任何提示。

4

3 回答 3

1

这与下载速度无关。

XPath//*选择整个页面。XPath//script/text()只选择脚本元素内的文本。所以当然第二个更快,因为用re()调用搜索的文本更少!

于 2012-04-18T20:58:08.867 回答
1

恐怕您可能会在整个文档中寻找“某些东西”,因此您可能仍应使用hxs.select('//*').re('something').

text()关于速度问题:答案是,如果您在 4k 大的文档中查找“某物”一词,那么在该文本中查找该词之后,过滤文档当然需要更长的时间。

于 2012-04-18T21:04:57.740 回答
0

XPath对爬虫速度肯定有影响,爬虫下载页面,但是Xpath处理爬虫下载的Html。所以如果页面很大,那么 xpath 将需要时间来处理整个 Html。

于 2012-04-20T14:33:56.777 回答