我正在使用Scrapy抓取工具抓取超过100k页的网站。在这种情况下,速度是最关心的问题。今天我注意到hxs.select('//*').re('something')
比hxs.select('//script/text()').re('something')
慢。任何专家都可以向我解释原因吗?
据我所知,无论我使用什么xpath选择器,抓取工具都应该下载整个页面。所以xpath不应该对速度产生很大的影响。
非常感谢任何提示。
答案 0 :(得分:1)
这与下载速度无关。
XPath //*
选择整个页面。 XPath //script/text()
仅选择脚本元素中的文本。所以当然第二个更快,因为使用re()
调用搜索的文本较少!
答案 1 :(得分:1)
我担心你可能会寻找“'在整个文档中,您可能仍应使用hxs.select('//*').re('something')
。
关于速度问题:答案是,如果你找到“'在一个4k大的文档中,当然需要更长的时间来过滤text()
的文档并在该文本中查找该单词后。
答案 2 :(得分:0)
XPath肯定在爬虫速度,爬虫下载页面中起作用,但Xpath处理爬虫下载的Html。因此,如果页面很大,那么xpath将需要时间来处理整个Html。