2017-10-17 8 views
0

: https://www.investing.com/economic-calendar/파이썬 - lxml.html 정규식으로 HTML 테이블 요소를 가져옵니다 나는 다음 웹 사이트의 다음과 같은 요소를 얻기 위해 노력하고

enter image description here

내가 사용하고 파이썬 요청 및 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 인 것을 고려하십시오. "actual"열의 요소는 공통적으로 td의 클래스 속성에서 접미어 "actual"을가집니다. 그러나 그 이전의 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?

답변

1

저는 Upwork에서 왔습니다. 이게 니가 원하는 것 같아.

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