首页 > 解决方案 > 如何找到 HTML 标记的标题属性的 Xpath 并打印所述标题的文本

问题描述

我正在使用 pythons scrapy 库。我希望能够使用 Xpath 选择器从以下 html 代码中抓取<h1>'属性中包含的文本。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()

我需要的数据如下:

"Go to Facebook home"

标签: pythonscrapy

解决方案


在 scrapy 中使用选择器时,您应该Selector首先导入 scrapy,如下所示:

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,尤其是关于选择器的文档,甚至还可以了解xpath


推荐阅读