2015-09-27 91 views
0

閱讀多年後,這是我的第一個SO問題。先謝謝您的幫助!模擬當用Python和BeautifulSoup拼圖時點擊一個鏈接

我正在尋找從福布斯網站上的文章颳去內容。以此爲例頁面:http://www.forbes.com/sites/katevinton/2015/09/22/google-microsoft-qualcomm-and-baidu-announce-joint-investment-cloudflare/。當文章直接加載時,頁面源代碼就變成了一堆很難解析的JavaScript代碼。然而,當我點擊'打印'按鈕時,它會在URL中附加一個「/ print /」,並給我一個頁面,我沒有問題與BeautifulSoup解析。

當我輸入帶有「/ print /」的url時,它會重定向到非「/ print /」頁面。當我點擊按鈕時,我只能進入實際的「/ print /」頁面。因此,我的問題是:我怎樣才能模擬點擊該打印按鈕以編程方式進入美麗湯可刮頁面?縱觀周圍,人們似乎建議模擬瀏覽器動作的機械化,但我不確定在這種情況下我會用它來做什麼。或者有更好的方法來完全刪除這些數據嗎?

我很感激你可以提供的任何幫助!

回答

1

您需要使用引薦組要求,所以像這樣的工作:

import requests 

url = "http://www.forbes.com/sites/samsungbusiness/2015/09/23/how-your-car-is-becoming-the-next-hot-tech-gadget/print/" 
print requests.get(url, headers={"referer": url.replace("print/", "")}).content 
+0

完美!非常感謝。那就是訣竅。爲了能夠在將來更加自給自足,你怎麼知道它會在尋找上一頁的引用者?是從頁面的行爲顯而易見,還是在頁面的代碼中? –

+0

我不知道,這是一個有教養的猜測,我做了很多網絡抓取。只有很多可能導致它的差異,而引用者是這種情況下最明顯的選擇。它重定向回來是一個很好的指標,它可能會阻止人們直接鏈接/ print頁面,該頁面沒有廣告,因此他們檢查用戶是否來自文章。在腳本和瀏覽器中頁面行爲不同的主要原因是:JavaScript,自定義標頭和CSRF令牌(僅限POST)。我總是通過模擬真實瀏覽器請求的標題開始,這通常是最好的第一步。 –