codecamp

scrapy 2.3 使用相对路径

请记住,如果要嵌套选择器并使用以开头的xpath ​/​ ,该xpath对文档是绝对的,而不是相对于 ​Selector​ 你是从打电话来的。

例如,假设您希望提取所有 ​<p>​ 内部元素 ​<div>​ 元素。首先,你会得到所有 ​<div>​ 元素:

>>> divs = response.xpath('//div')

首先,您可能会尝试使用以下方法,这是错误的,因为它实际上提取了所有 ​<p>​ 文档中的元素,而不仅仅是其中的元素 ​<div>​ 元素:

>>> for p in divs.xpath('//p'):  # this is wrong - gets all <p> from the whole document
...     print(p.get())

这是正确的方法(注意在 ​.//p​ XPath):

>>> for p in divs.xpath('.//p'):  # extracts all <p> inside
...     print(p.get())

另一个常见的情况是提取所有直接 ​<p>​ 儿童:

>>> for p in divs.xpath('p'):
...     print(p.get())

有关相对路径的更多详细信息,请参见 Location Paths XPath规范中的节。

scrapy 2.3 extract()和extract_first()
scrapy 2.3 按类查询使用CSS
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

scrapy 2.3 链接提取器

scrapy 2.3 统计数据集合

scrapy 2.3 发送电子邮件

scrapy 2.3 蜘蛛合约

scrapy 2.3 如何部署蜘蛛

scrapy 2.3 AutoThrottle扩展

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }