2017-12-02 188 views
1

我有一個網站,我試圖從數據中提取數據,但需要經過2頁的數據:登錄屏幕和第二個屏幕,我選擇的數據是讀。 我的代碼如下所示:urllib發出多個POST請求

import urllib 
    from bs4 import BeautifulSoup 

    url = 'http://website.com' 
    values = {'userName' : 'tom', 
       'Login' : 'submit'} 
    data = urllib.parse.urlencode(values).encode('ascii') 
    req = urllib.request.Request(url, data) 
    page = urllib.request.urlopen(req) 
    soup = BeautifulSoup(page,'html.parser') 
    print(soup.text) 

我的問題是我怎麼會爲了得到該即時尋找數據的登錄請求後,提交第二次POST請求?

+0

很多網站使用基於cookie的會話。您可以使用['requests.session'](http://docs.python-requests.org/en/master/user/advanced/)在下次調用登錄後堅持cookies。 – Randyr

+0

我發現對於我正在使用的網站,我可以將第二頁的輸入數據放在值字典中,並與登錄頁面的輸入一起使用。 –

回答

0

通常,它總是取決於他們如何認證用戶以及他們如何存儲此會話,php,基於令牌的,谷歌認證。不知道所有這些信息都很難知道。解決這個問題的常用方法是使用無頭網頁瀏覽器。可以通過代碼控制的瀏覽器。允許您像通常那樣點擊頁面!

我推薦使用seleniumhq for python! http://www.seleniumhq.org/