2017-10-17 101 views
0

我試圖讓下面的網站的以下元素:https://www.investing.com/economic-calendar/Python的 - 獲取HTML表格元素與lxml.html正則表達式

enter image description here

我使用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中的第3項是感興趣的。來自「實際」列的那些元素在td的類屬性中具有共同的後綴「實際」。但之前的int和字體樣式各不相同。所以我想在我的xpath表達式中使用正則表達式,只定位後綴「actual」。

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

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

(均來自其他做題),但都返回SyntaxError: invalid predicate

任何人都可以幫助我找到正確的xpath正則表達式來找到td

回答

1

我來自Upwork。我想這就是你想要的

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