我一直在尝试登录网页以使用python抓取一些数据。在使用登录网站的Chrome检查后,我只是不知道如何执行此操作,这似乎与此处找到的所有答案都不相同。这是站点https://www.weatherlink.com/,我需要登录到站点,然后从不同的公共站点抓取一些风速数据。
我尝试使用请求库和多个不同的有效负载,但均未成功。使用以下代码:
payload = {'username' : 'xx',
'password': 'yy',
'localTimezoneOffset': '10800000',
'keepLogged': ''}
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'
}
session_requests = requests.session()
login_url = "https://www.weatherlink.com/"
result = session_requests.post(login_url, data = payload, headers = headers, verify=True)
期望的是result.ok == True
,但是我使用reason == "Not allowed"
和status_code = 405
会得到False。登录后,我将从站点(例如网址https://www.weatherlink.com/bulletin/4a891aff-0761-4934-bdf9-9115397c12ea
非常感谢您的帮助。
答案 0 :(得分:1)
看来您的POST请求路径错误。 试试这个:
payload = {
'username': 'xxx',
'password': 'yyy',
'rememberMe': 'false',
'localTimezoneOffset': '-14400000',
'ianaTimeZone': 'America/New_York'
}
headers = {
#you should be able to skip the user-agent string, unless your trying to bypass some kind of anti-bot protection.
}
session_requests = requests.session()
login_url = "https://www.weatherlink.com/processLogin"
result = session_requests.post(login_url, data = payload, headers = headers, verify=True)