iT邦幫忙

0

Python Requests 登入後跳轉頁面問題請益

  • 分享至 

  • xImage

公司內網有個網頁A (DATA_URL) 點進去後會在頁面上呈現一張表格

我想抓取這張表格的欄位資訊

但連到網頁A 若沒有登入 網站會先導到登入頁面
成功登入才會跳轉回網頁A

目前我的流程是我直接requests.post登入頁面的網站(LOGIN_URL)
成功登入後 在requests.get網頁A(DATA_URL)

Python語法大致如下

import requests
from lxml import html

LOGIN_URL = 'http://xxx.xxx.xxx.xxx'
DATA_URL = 'http://xxx.xxx.xxx.xxx'

session_requests = requests.session()

login_params = {'VIEWSTATE': VIEWSTATE,
'VIEWSTATEGENERATOR': VIEWSTATEGENERATOR,
'EVENTVALIDATION': EVENTVALIDATION,
'tbUserId': 'xxx',
'tbPassword': 'xxx',
'LoginType': 'xxx',
'btnLogin': 'xxx'}

r = session_requests.post(LOGIN_URL, data = login_params)
URL_COOKIES = session_requests.cookies.get_dict()
print(URL_COOKIES)

上述這段可以正常登入網站

但登入後 我執行這段 要連到我想要抓表格資料的網站

r = session_requests.get(DATA_URL, headers = headers, cookies = URL_COOKIES)

就出現以下這個問題...

raise TooManyRedirects('Exceeded %s redirects.' % self.max_redirects, response=resp)
requests.exceptions.TooManyRedirects: Exceeded 30 redirects.

Google了許久 試過max_redirects加大、allow_redirects改成False
加入headers跟cookies可是都不行...

不知道是哪邊出了問題

headers是根據我要抓資料的網站(DATA_URL)裡面的Request Headers的樣子來寫
cookies是在登入LOGIN_URL後,用session_requests.cookies.get_dict()來抓的

不知道上述做法是否正確?

再請各位高人指點

謝謝

看更多先前的討論...收起先前的討論...
froce iT邦大師 1 級 ‧ 2018-07-19 23:10:53 檢舉
headers有改user-agent?
Neish iT邦研究生 1 級 ‧ 2018-07-20 09:41:16 檢舉
我是根據DATA_URL裡面的Request Headers來寫

user-agent是這樣User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36

這部分有需要做調整嗎?
vsu91267 iT邦新手 5 級 ‧ 2018-07-23 09:38:29 檢舉
可以搭配selenium試試看
Neish iT邦研究生 1 級 ‧ 2018-07-23 15:25:01 檢舉
搭配還是不行耶...
不知道是哪邊出了問題...

我原本的構想是不想開啟瀏覽器的
但一直試不出來@@
只好改以selenium進行操作
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答