【问题标题】:lxml xpath not workinglxml xpath 不工作
【发布时间】:2016-03-06 03:44:40
【问题描述】:

我正在尝试解析下面的网页代码。 我能够让用户使用 xpath,但我无法使用 xpath 获得他们的分数,任何想法我在这里做错了什么?

import requests
from lxml import html

internsHack = 'https://doselect.com/hackathon/inmobi-internshack/leaderboard'

page = requests.get(internsHack)
tree = html.fromstring(page.content)

users = tree.xpath('//div[@class="md-list-item-text"]/h2/a/text()')
score = tree.xpath('//div[@class="points-score"]/ng-pluralize/text()')

【问题讨论】:

    标签: python html xpath web-scraping lxml


    【解决方案1】:

    HTML 源代码 sn-p:

    <div class="points-score">
      <ng-pluralize count="200"
                               when="{'0': '{} point',
                                   'one': '{} point',
                                   'other': '{} points'}">
    </div>
    

    获取count 属性值而不是text()

    //div[@class="points-score"]/ng-pluralize/@count
    

    score 变量将具有以下值:

    ['200', '198', '198', '197', '197', '197', '196', '195', '194', '194']
    

    【讨论】:

    • 您的答案是正确的,但很想知道您是如何认为计数是一个属性,因为当我在 chrome 200 点的开发人员工具中查找此属性时,它是一个文本项
    • @NickLoach 您在浏览器开发人员工具的“源代码”中看到的是浏览器呈现的页面,它可能与初始页面有很大不同。你用requests 得到的是最初的未渲染页面——这是你应该检查的。希望对您有所帮助。
    • 感谢您的解释,我检查了请求内容现在难以辨认,但您对 count 属性的看法是正确的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多