【问题标题】:Python - Get html table element with lxml.html regexPython - 使用 lxml.html 正则表达式获取 html 表格元素
【发布时间】:2017-10-17 21:38:39
【问题描述】:

我正在尝试获取以下网站的以下元素:https://www.investing.com/economic-calendar/

我正在使用 python 请求和 lxml.html:

import requests
import lxml.html

payload= {
 'country[]': [25,32],
 'limit_from': 0,
 'submitFilters': 1,
 'timeFilter': 'timeRemain',
 'currentTab': 'today',
 'timeZone': 55}
headers={'User-Agent': 'Mozilla/5.0','X-Requested-With': 'XMLHttpRequest'}

r=requests.post("https://www.investing.com/economic-calendar/",
                               data=payload, headers=headers) 
html = lxml.html.fromstring(r.text)
results = html.xpath("//table[@id='economicCalendarData']//tr")

让我们在这里考虑列表中的第三项results 是感兴趣的一项。 “实际”列中的那些元素在 td 的类属性中具有共同的后缀“实际”。但在此之前的 int 和字体样式会有所不同。所以我想在我的 xpath 表达式中使用正则表达式,只定位后缀“实际”。

我一直在尝试
results[3].find(".//td[contains(@class,'actual')]")

和

results[3].find(".//td[substring(@class, string-length(@class)-6)='actual']")

(均来自其他 SO 问题)但均返回 SyntaxError: invalid predicate。

谁能帮我找到正确的 xpath 正则表达式来定位 td?

【问题讨论】:

    标签: python xpath lxml


    【解决方案1】:

    我来自 Upwork。我想这就是你想要的

    results[3].xpath("//td[contains(@class,'actual')]")
    

    【讨论】:

      猜你喜欢
      • 2014-03-01
      • 1970-01-01
      • 2011-11-11
      • 1970-01-01
      • 2016-09-08
      • 1970-01-01
      • 2018-12-18
      • 2018-08-22
      • 1970-01-01
      相关资源
      最近更新 更多