2017-03-07 44 views
2

我指着網上的新聞報道約10.000的URL列表不同的網站設置。我寫了一些代碼來使用Requests-library(Python 3.5)來刮掉這些新聞文章的html內容。目標是使用可讀性模塊檢索文章內容並對其進行進一步分析。這在大部分時間都適用。但是,所有網站都是荷蘭語,因此受歐盟政策的約束,他們必須要求同意使用cookies。其中一些例如http://telegraaf.nl通過加載一個單獨的頁面來完成,用戶必須點擊一個按鈕。在這種情況下,我可以通過傳遞一個cookie的頭部得到正常的文章內容:找出Cookie在使用Python

import requests 

user_agent = 'Mozilla/5.0' 
url = 'http://www.telegraaf.nl/dft/geld/werk-inkomen/27740808/__Vechten_om_werk_in_noorden__.html' 
cookies_telegraaf = {'TMGCOOKIE': '{%22version%22:%22t3%22}'} 
html = requests.get(url, headers={"User-Agent": user_agent}, cookies=cookies_telegraaf) 
print(html.content) 

這將輸出HTML的內容,我需要。問題是,每個網站都需要一個不同的cookie。所以我的問題是:有沒有辦法找出每個網站的標題中傳遞哪些特定的Cookie,而無需在瀏覽器中手動檢查?

感謝您的幫助。

回答

0

這更像是不是真正的答案評論。 Here是另一個可能有幫助的答案。
我會做的是處理,如果沒有Cookie的工作的第一站點,然後嘗試對付那些誰不加載單獨的頁面,然後那些單獨的頁面。
但是,如果你的問題是要知道是否有訪問到餅乾容易的方式,請求文件給出了一個方法,here

url = 'http://example.com/some/cookie/setting/url' 
>>> r = requests.get(url) 

>>> r.cookies['example_cookie_name'] 
'example_cookie_value' 

要發送您自己的cookie到服務器,你可以使用餅乾參數:

>>> url = 'http://httpbin.org/cookies' 
>>> cookies = dict(cookies_are='working') 

>>> r = requests.get(url, cookies=cookies) 
>>> r.text 
'{"cookies": {"cookies_are": "working"}}' 
+0

感謝您的信息。沒有cookies或沒有單獨頁面要求同意的網站可以正常工作,所以我可以處理這些問題。悲傷地訪問cookie的方法不起作用,看起來:我必須積極設置一個特定的cookie,意味着我接受來自網頁的cookie(我不會在這裏進行諷刺)。有時它可能是'accept_cookies'設置爲'1',另一個網站使用不同的格式。我目前知道的唯一方法是單擊「接受cookies」按鈕,然後檢查我的瀏覽器設置以查看設置了新的cookie。 – Kevin

+0

@Kevin如果這是你可能會需要像'selenium'庫來模擬瀏覽器的情況。有沒有在頁面中,也許像「輸入型=‘提交’」或類似的東西的接受按鈕的常見元素,如果是的話,你可以嘗試將它們查明硒自動點擊它們和接收cookies? –

+0

謝謝,我會試用Selenium並報告結果。可悲的是,有些人使用按鈕,而其他人只是使用超鏈接。但是通常頁面上只有一個或很少,所以有一點額外的編碼可以完成這項工作。當我知道更多時,我會讓你知道。 – Kevin