我正在使用pythons scrapy库。我希望能够使用Xpath选择器从以下html代码中抓取<h1>
的{{1}}属性中包含的文本。
title
这是我已经尝试过的方法,但是不起作用。如何使它起作用?
<h1>
<a href="https://www.facebook.cpm/" title="Go to Facebook home">
<i class="fb_logo img sp_z3EmYTfbUvU_1_5x sx_91465b">...</i>
</a>
</h1>
我需要的数据如下:
response.xpath('//h1/a/title()').extract()
答案 0 :(得分:2)
在scrapy中使用选择器时,应首先导入scrapy的Selector
,如下所示:
from scrapy.selector import Selector
现在在scrapy中使用xpath的正确方法是利用Selector
类,如下所示:
response = '''<h1>
<a href="https://www.facebook.cpm/" title="Go to Facebook home">
<i class="fb_logo img sp_z3EmYTfbUvU_1_5x sx_91465b">...</i>
</a>
</h1>'''
title = Selector(text=response).xpath('//h1/a/@title').extract()
这将返回一个列表对象:
['Go to Facebook home']
现在,您可以使用列表索引以字符串形式获取文本:
title[0]
我强烈建议您尤其是在scrapy docs上阅读selectors,甚至也要学习about xpath。
答案 1 :(得分:2)
似乎您使用错误的xpath
来提取属性title
用作:
response.xpath('//h1/a/@title').extract() #i just change /title() to @title