如何找到HTML标记的title属性的Xpath并打印该标题的文本

时间:2019-01-13 05:49:42

标签: python scrapy

我正在使用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()

2 个答案:

答案 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