2017-10-17 13 views
0

https://www.investing.com/economic-calendar/パイソン - lxml.htmlの正規表現でHTMLテーブル要素を取得し、私は、次のWebサイトの次の要素を取得しようとしています

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") 

リストの3番目の項目は、resultsであると考えてください。 「実際」の列の要素には、tdのクラス属性に接尾辞「実際」があります。しかしそれ以前のintとフォントスタイルは異なります。だから、私はxpath式で正規表現を使用したいのですが、接尾辞 "実際"を見つけるだけです。

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

(他のSOの質問から両方)

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

をしようとしているが、両方はSyntaxError: invalid predicateを返します。

誰でも正しいxpath regexp式を見つけて、tdを見つけるのを助けることができますか?

答えて

1

私はUpworkからです。私はこれがあなたが望むものだと思います。

results[3].xpath("//td[contains(@class,'actual')]") 
関連する問題