代码之家  ›  专栏  ›  技术社区  ›  SIM

无法分析来自不同表的'th'标记和'td'标记的数据

  •  2
  • SIM  · 技术社区  · 7 年前

    我用python编写了一个脚本,使用 xpath 解析网页中的表格数据。在执行时,它能够完美地解析表中的数据。我唯一无法修复的就是解析 table header 这意味着 th 标签如果我使用css选择器也这样做,我可以使用 .cssselect("th,td") 但如果 xpath 我被卡住了。关于如何解析数据的任何帮助 th公司 tag也将受到高度赞赏。

    下面是一个脚本,它能够从不同的表中提取所有内容,除了 th公司 标签:

    import requests
    from lxml.html import fromstring
    
    response = requests.get("https://fantasy.premierleague.com/player-list/")
    tree = fromstring(response.text)
    for row in tree.xpath("//*[@class='ism-table']//tr"):
        tab_d = row.xpath('.//td/text()')
        print(tab_d)
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   Andersson    7 年前

    我不确定我是否明白你的意思,但如果你想把两者都拿出来 th td 使用单个XPath的节点,可以尝试替换

    tab_d = row.xpath('.//td/text()')
    

    具有

    tab_d = row.xpath('.//*[name()=("th" or "td")]/text()')
    
        2
  •  1
  •   kjhughes    7 年前

    改变

    .//td/text()
    

    .//*[self::td or self::th]/text()
    

    包括 th 元素也是。

    请注意,可以合理地假设 td th公司 tr 上下文节点,因此您可以进一步将XPath简化为:

    *[self::td or self::th]/text()