LinkExtractor
对于给定的域,我有一个简单的规则。像这样的东西:Rule(LinkExtractor(allow=('domain\.com/.+/\d+', )), callback='parse_page'),
我想要但无法弄清楚的是,要知道页面中的链接位于哪个位置。
例如,如果给定的域在页面上有5个与我的规则匹配的链接,我需要从上到下知道它们在HTML中的顺序。
我发现了很多有关提取顺序的问题,但是没有任何关于链接本身在HTML中的顺序的误解,或者我误解了一些东西
Scrapy使用lxml进行html解析。LinkExtractor
用于root.iter()
迭代。这条线更确切。
元素为此提供了一个树迭代器。它按文档顺序生成元素,即,如果您将树序列化为XML,则按它们的标签显示顺序:
因此对于html源:
<root>
<child>Child 1</child>
<child>Child 2</child>
<another>Child 3</another>
</root>
它会产生:
>>> for element in root.iter(tag=etree.Element):
... print("%s - %s" % (element.tag, element.text))
root - None
child - Child 1
child - Child 2
another - Child 3
您可以使用上面发布的lxml docs链接中提供的示例复制该过程。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句