【问题标题】:Can't fetch an item using xpath defined within my scraper无法使用我的刮刀中定义的 xpath 获取项目
【发布时间】:2018-03-25 11:04:47
【问题描述】:

我尝试创建两个xpaths 以从某些元素中获取两个项目。但是,第一个做得很好,但在第二个的情况下:我不知道。对此的任何帮助将不胜感激。

<div class="mdif">
    <ul>
        <li><b>Genre:</b>Thriller</li> 
        <li><b>Quality:</b></li>1080p  
    </ul>
</div>

我试过这样:

from lxml.html import fromstring   
content="""
<div class="mdif">
    <ul>
        <li><b>Genre:</b>Thriller</li> 
        <li><b>Quality:</b></li>1080p  
    </ul>
</div>
"""
root = fromstring(content)
for items in root.xpath("//div[@class='mdif']"):
    genre = items.xpath(".//li/text()")[0]
    # quality = items.xpath(".//li/text()")[0]
    print(genre,quality)

当我运行上面的脚本时,它会获取genre,但如果是quality,我会卡住。我想得到的输出是1080p

【问题讨论】:

  • 您共享两个 HTML 源示例,其中质量值属于不同的父节点。你想要一个解决方案来匹配这两种情况吗?
  • 修正了差异,先生。

标签: python python-3.x xpath web-scraping lxml


【解决方案1】:

尝试使用这个来获得质量价值:

quality = items.xpath("./ul/text()[position()=last()]")[0]

这个也可能适用:

quality = items.xpath(".//b[.='Quality:']/following::text()")[0]

【讨论】:

  • 接受您的回答需要一些时间,先生。你是无敌的。
猜你喜欢
  • 2018-06-10
  • 2018-12-16
  • 1970-01-01
  • 1970-01-01
  • 2013-05-17
  • 1970-01-01
  • 1970-01-01
  • 2014-11-11
  • 1970-01-01
相关资源
最近更新 更多