Python - 使用 lxml.html 正则表达式获取 html table 元素
Python - Get html table element with lxml.html regex
我正在尝试获取以下网站的以下元素: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")
让我们在这里考虑列表中的第 3 项 results
是感兴趣的一项。 "actual" 列中的那些元素在 td 的 class 属性中具有共同的后缀 "actual"。但是之前的int和字体样式不同。所以我想在我的 xpath 表达式中使用正则表达式,只定位后缀 "actual".
我一直在努力
results[3].find(".//td[contains(@class,'actual')]")
和
results[3].find(".//td[substring(@class, string-length(@class)-6)='actual']")
(均来自其他 SO 问题)但均 return SyntaxError: invalid predicate
.
任何人都可以帮我找到正确的 xpath 正则表达式来定位 td
吗?
我来自 Upwork。我想这就是你想要的
results[3].xpath("//td[contains(@class,'actual')]")
我正在尝试获取以下网站的以下元素: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")
让我们在这里考虑列表中的第 3 项 results
是感兴趣的一项。 "actual" 列中的那些元素在 td 的 class 属性中具有共同的后缀 "actual"。但是之前的int和字体样式不同。所以我想在我的 xpath 表达式中使用正则表达式,只定位后缀 "actual".
我一直在努力
results[3].find(".//td[contains(@class,'actual')]")
和
results[3].find(".//td[substring(@class, string-length(@class)-6)='actual']")
(均来自其他 SO 问题)但均 return SyntaxError: invalid predicate
.
任何人都可以帮我找到正确的 xpath 正则表达式来定位 td
吗?
我来自 Upwork。我想这就是你想要的
results[3].xpath("//td[contains(@class,'actual')]")