Я пытаюсь ввести пользовательский диапазон дат в виде HTML, чтобы очистить данные для данного диапазона. HTML-код выглядит следующим образом:
<div class="dateRange inlineblock datePickerBinder arial_11 lightgrayFont"
id="widgetFieldDateRange">03/19/2019 - 04/18/2019</div>
</div>
<input id="picker" type="hidden" value=" 03/19/2019 - 04/18/2019">
Я пробовал следующее:
import requests
import urllib.parse as urlParse
url = 'https://www.investing.com/funds/lansforsakringar-global-indexnara-historical-data'
values = {'start':'01/18/2019','end':'04/18/2019'}
# pretend to be a chrome 47 browser on a windows 10 machine
headers = {
"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36",
"Accept" : "text/plain, */*; q=0.01",
"Content-Type" : "application/x-www-form-urlencoded",
"X-Requested-With" : "XMLHttpRequest"
}
# encode values for the url
params = urlParse.urlencode(values).encode("utf-8")
# create the url
s = requests.Session()
targetUrl = s.post(url=url, data=params, headers=headers)
# open the url
html = BeautifulSoup(targetUrl.content, "html.parser")
# read the response
print(html.prettify)
Но при печати ответа я вижу, что установлен диапазон дат по умолчанию и что мой пользовательский диапазон дат не был применен. Как мне решить эту проблему?
Обнаружил также, что я верю в javascript, который публикует дату
<script type="text/javascript">
window.siteData = {
htmlDirection: 'ltr',
decimalPoint: '.' || '.',
thousandSep: ',' || ',',
isEu : false,
userLoggedIn: false,
userHasPhoneRegistered: false,
currencyPosition: 'left',
datepicker: {
applyButton: 'Apply',
format: 'm/d/Y',
formatShort: 'm/d/y',
formatLong: 'm/d/Y',
formatSend: 'yy-mm-dd',
firstDay: '1',
dayNames: ["Su","Mo","Tu","We","Th","Fr","Sa"],
monthNamesShort: ["Jan.", "Feb.", "Mar.", "Apr.", "May", "Jun.", "Jul.", "Aug.", "Sep.", "Oct.", "Nov.", "Dec."],
monthNames: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
translations: {
custom: 'Custom dates',
start: 'Start Date',
end: 'End Date'
}