2017-03-02 62 views
0

我請你糾正我在這裏我錯了什麼。我獲得的html代碼又是一個帶登錄表單的頁面。我的意思是在一個會話中獲取令牌,然後使用它來登錄。我打算做的是使用bs4來收集一些數據。登錄網站,然後網絡廢料數據(Python)

import bs4 
import requests 

session = requests.session 
with requests.Session() as s: 
    url = 'https://www.planetplus.pl/' 
    res = requests.get(url) 
    data = res.text 
    soup = bs4.BeautifulSoup(data, 'lxml') 
    token = soup.find_all('input', attrs={'name': '__RequestVerificationToken'})[0]['value'] 
    print(token) 
    payload = {'UserName': 'xxx', 'Password': 'yyy', 
       '__RequestVerificationToken': token} 
    p = s.post(url, data=payload) 
    r = s.get('https://www.planetplus.pl/moje-konto-cashback') 
    print(r.text) 

網站鏈接:https://www.planetplus.pl/

嗯,說實話我是個初學者,所以如果你能糾正我,甚至複雜的,建議如何做到這一點的最好的,這將是巨大的!

此外,網站http://www.exsite.pl/的程序有多少不同,因爲我刪除登錄憑證字典中的令牌部分,並且輸出是訪問受限頁面html代碼。不要判斷網站,先用不同的登錄類型中發現,至少對我來說不同;)

import requests 

with requests.Session() as s: 
    session = requests.session 
    url = 'http://exsite.pl//' 
    payload = {'login_name': 'xxx', 'login_password': 'yyy!'} 
    p = s.post(url, data=payload) 
    #print(p.text) 
    r = s.get('http://www.exsite.pl/filmy_video_movies/filmy-dvdrip-brrip/1378773-ukryte-piekno-collateral-beauty-2016-plsubbed480pbrripxvidac3-krt-napisy-pl.html') 
    print(r.text) 

回答

0

工作實例爲https://www.planetplus.pl/

import bs4 
import requests 


BASE_URL = 'https://www.planetplus.pl/' 
LOGIN_URL = BASE_URL + 'logowanie' 


with requests.Session() as session: 
    res = session.get(BASE_URL) 

    soup = bs4.BeautifulSoup(res.text, 'lxml') 
    token = soup.find_all('input', attrs={'name': '__RequestVerificationToken'})[0]['value'] 
    payload = {'UserName': '[email protected]', 'Password': 'qwerty', 
       '__RequestVerificationToken': token} 

    session.post(LOGIN_URL , data=payload) 
    res = session.get(BASE_URL) 
    print(res.text) 
+0

以關注會話對象。如果你想使用同一個會話,那麼你應該使用同一個會話對象。 –

+0

另請注意我是如何移動變量BASE_URL和LOGIN_URL的。你應該對重複的代碼做同樣的事情。 –

+0

我可能看起來很笨,但它現在可以工作。 'BASE_URL ='http://www.exsite.pl/' LOGIN_URL = BASE_URL with requests.Session()as session: res = session.get(BASE_URL) payload = {'login_name':'xxx', 'login_password':'!xxx'} session.post(BASE_URL,data = payload) res = session.get('http://www.exsite.pl/') res = res.text print(res )' – Sebastian