Scrapy(开源Web爬网框架)如何工作?

时间:2018-12-28 07:31:01

标签: parsing dom web-scraping scrapy data-extraction

Scrapy官方文档中的报价:

  

Scrapy带有其自身的数据提取机制。之所以称为选择器,是因为它们“选择”了XPath或CSS表达式指定的HTML文档的某些部分。 Source

阅读此书后,我仍然不确定Scrapy是否可以通过使用XPath / CSS表达式直接选择HTML文档的一部分或从浏览器呈现的DOM Tree中选择节点来工作?

仍然困惑DOM解析和HTML解析是否相同...

1 个答案:

答案 0 :(得分:1)

  

阅读此书后,我仍然不确定Scrapy是否可以通过使用XPath / CSS表达式直接选择HTML文档的一部分或从浏览器呈现的DOM Tree中选择节点来工作?

可以肯定的是前者,因为绝对不涉及浏览器。甚至“ CSS”部分也只是XPath部分的语法糖,可以通过打印出“进行中”的Selector来看到:

>>> print(Selector(text="<html><div class='foo'></div></html>").css(".foo"))
[<Selector xpath="descendant-or-self::*[@class and contains(concat(' ', normalize-space(@class), ' '), ' foo ')]" data='<div class="foo"></div>'>]
  

仍然困惑DOM解析和HTML解析是否相同...

严格来说,我相信它们是不同的。例如,lxml能够解析HTML,但是它以其自己的方式解析,并实现了xml.etree兼容而不是DOM兼容的对象树。 minimal DOM library有一个html5lib can target,它与“浏览器将构建的内容”最接近。