无需登录即可使用Python登录网站

时间:2019-05-24 23:17:03

标签: python web-scraping login screen-scraping

我一直在尝试登录网页以使用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

)中抓取数据

非常感谢您的帮助。

1 个答案:

答案 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)