简单介绍
简化获得和抽取数据复杂性的网络框架。
Scrapy是用于提取结构化信息的,需要人工介入,设置合适的XPath或者CSS表达式。
关于HTML和XPath
URL:第一部分通过域名系统在网络上定位合适的服务器,剩余部分请求服务端理解发送的请求。
HTML:放在网络上的文本文件。理解标签,元素,属性,以及包含的文本。
树表示法:树形数据结构,利用框模型映射到屏幕上。
XPath:XPath语言可用于选择并抽取元素,属性和文本。
XPath语法:
- // :取得某一特定的元素,无需考虑其所在的层次结构。例,//p会选择所有的p元素,//div//a选择所有div中的所有链接。
- / :在且仅在子元素中获得某一特定类型的元素。
- @ :访问属性。例,//a/@href,可获得链接。
- text() :通过text()方法获得其文本。例,//a/text()
可以选择以某一特定子字符串起始或包含的能力。
#查找所有链接
//a[@href]
#查找指定链接
//a[@href = “https:baidu.com”]
#查找包含"baidu”的链接
//a[contains(@href, “baidu”)]
#查找以“https”开头的链接
//a[starts-with(@href, “https”)]
#查找不包含“abc”的链接
//a[not(@href, “abc”)]
减少表达式的失效
- 避免使用数组索引,应尽可能接近目标的标签,找到可以使用的包含id或者class的属性元素。
- 类不总是好用,class属性一般是通过CSS影响外观,所以网站更新时微小变化可能是表达式失效。
- 使用面向数据的类比面向布局的类更好,布局变化时,前者更有可能保持有效。
- ID通常最靠谱。