首页| 论坛| 消息
主题:xpath抓取的值有空格换行符等问题
回帖:Scrapy使用XPath的表达式的机制来获得html或xml中的内容。这里只记录下html的使用。
你可以用scrapy shell来测试selector的用法,官网提供了一个简单的测试页面给你使用:
http://doc.scrapy.org/en/latest/_static/selectors-sample1.html
在shell中抓取一个页面:
scrapy shell http://doc.scrapy.org/en/latest/_static/selectors-sample1.html
用shell抓回来的页面,默认的对象是hxs。
获取title标签
hxs.select("//title")
select函数返回的是一个XPathSelectorList
获取title标签中的文本
hxs.select("//title/text()")
只显示文本,而不是一个XPathSelectorList
hxs.select("//title/text()").extract()
获取标签中的属性,例如获取href属性中的内容
hxs.select('//base/@href').extract()
使用contains函数查找指定内容,格式为:
contains(str1, str2) # str1中有str2,则返回true,例如以下表达式输出链接文字中包含image的链接:
hxs.select('//a/@href').extract()
如果你想获取div标签中的所有p标签的内容,你不能这样写:
divs=hxs.select("//div")
for p in divs.select("//p")# 获取所有的p标签中的内容,而不是仅是div中的内容
print p.extract()
正确的写法:
divs=hxs.select("//div")
for p in divs.select(".//p")
print p.extract()
或者
divs=hxs.select("//div")
for p in divs.select("p")
print p.extract()
HtmlXPathSelector 需要一个html_response作为参数:
x = HtmlXPathSelector(html_response)
下一楼›:a=response.xpath('//a')
a=response.xpath('//a')
‹上一楼:a/@href

contains(str1, str2) # str1中有str2,则返回true,例如以下表达式输出链接文 ..

查看全部回帖(10)
«返回主帖