Comment on page
Scrapy-Xpath
标签[1]的覆盖范围更广泛,比如
//div[@class=title]/a[1] #所有div标签中的第一个a
//div[@class=title]/a.extract_first() #所有的div标签下的a标签构成的列表的第一个元素
xpath返回的迭代器有三个部分
[<Selector xpath='descendant-or-self::title' data='<title>Quotes to Scrape</title>'>]
extract()
函数则是把其中的data部分全部提取出来,是一个列表;extract_first()
返回符合条件的第一个数据;as=response.xpath('//*/div[@class="guide"]/text()').extract()
加入text后,可以去掉元素的标签- 全部孩子节点“//”;
- 直接孩子节点“/”
- '*' 返回全部符合条件的节点进入列表。
# 在使用extract之前才可以继续筛选
as=response.xpath('//*/div[@class="guide"]')
for a in as:
a.xpath("p/text()")
re.sub(正则表达式,替换成的部分,字符串)
;sub是贪心算法,会匹配到最长的模式,在正则表达式中加入”?“则使用最短匹配方式;寻找最近的<>之间来替换
a = re.sub(r'<.*?>', '', a)
answer_xpath.xpath("center/img/@src").extract()
with open("C:\\Users\\daiyifan\\pclady_wiki\\pclady_wiki\\wiki_url.json","r",encoding="utf-8") as js:
wiki_url=json.load(js)
/bookstore/book[last()]
/div[@*]
as=response.xpath("//*/div/p")
for a in as:
i=a.xpath("span").extract()
j=a.xpath("@href").extract()
following-sibling::p #后兄弟节点P,属于xpath的轴
Last modified 4yr ago