簡體   English   中英

避免與 requests.Session() 的同時會話?

[英]Avoiding simultaneous sessions with requests.Session()?

我正在嘗試抓取醫學期刊的網站( https://www.edimark.fr/ ,我是該網站的付費訂閱者)以獲取 PDF 文章的鏈接。 訪問文章需要身份驗證,我已經能夠使用requests.post成功登錄。 我的問題是,在請求獲得 5 個鏈接后,該站點似乎將我注銷(我可以判斷,因為當我測試打印每個鏈接的 HTML 時,在 5 個鏈接之后,我的帳戶名被通用用戶名替換)。 當我手動轉到網站再次登錄時,該網站告訴我不能同時進行 5 個以上的活動會話,我必須關閉其中一個會話才能再次登錄。 即使在我終止命令后,我仍然無法登錄一段時間。

我的問題是:有沒有辦法通過在循環(如下所示)重復之前重新啟動/注銷/終止每個會話來解決這個問題,以避免被啟動? 或者還有其他解決方案嗎? 我正在使用的代碼(隱藏用戶名和密碼)如下。 您可以看到我正在通過 14 個鏈接迭代請求。 我認為在with requests.Session() as s:下運行它會讓我在整個持續時間內保持登錄狀態,但情況似乎並非如此。 我還在s.get('https://www.edimark.fr/deconnexion')包含了s.get('https://www.edimark.fr/deconnexion') (注銷 URL),但這似乎也無濟於事。

import requests
from bs4 import BeautifulSoup
import os
import sys

login_url = "https://www.edimark.fr/front/frontlogin/index"
base_url = 'https://www.edimark.fr/resultat-recherche/magazine/14/page:'


payload = "data%5BUser%5D%5Bemail%5D=XXXXX&data%5BUser%5D%5Bpassword%5D=XXXXX&_method=POST"
headers = {
    'content-type': "application/x-www-form-urlencoded",
    'user-agent': "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36"
    }

with requests.Session() as s:
s.post(login_url, data=payload, headers=headers)
for i in range(1, 14):
    target_url = base_url +str(i)
    response = s.get(target_url, data=payload, headers=headers)
    soup = BeautifulSoup(response.content, 'html.parser')
    s.get('https://www.edimark.fr/deconnexion')
    print soup.text

請注意,我對任何類型的編碼/編程都很陌生,所以如果我沒有使用正確的措辭,請原諒我。 我確信上面的代碼也不是最優雅的。 任何建議或建議將不勝感激,如果可能的話,最好用更簡單的術語。

好吧,因為我沒有有效的email/pass來驗證我的請求。

我們需要一起走過,才能抓住主要issue

請運行以下代碼,如果您收到AssertionError ,請告訴我。

import requests
from bs4 import BeautifulSoup

data = {
    '_method': 'POST',
    'data[User][email]': 'email@email.com',
    'data[User][password]': 'yourpassword'
}


def Login(url):
    with requests.Session() as req:
        r = req.post(url, data=data, allow_redirects=True)
        assert "email@email.com" in r.text


Login("https://www.edimark.fr/front/frontlogin/index")

請用您的憑據替換email@email.comyourpassword

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM