2016-02-07 47 views
1

我嘗試打開與蟒蛇請求庫中的HTML頁面,但我的代碼打開該網站的根文件夾,我不知道如何解決這個問題。Python庫請求開錯頁

import requests 

scraping = requests.request("POST", url = "http://www.pollnet.it/WeeklyReport_it.aspx?ID=69") 

print scraping.content 

謝謝你的所有建議!

+0

那麼鏈接本身打開主站點,這是最有可能的問題。 –

回答

2

您可以很容易地看到服務器正在重定向到主頁面。

➜ ~ http -v http://www.pollnet.it/WeeklyReport_it.aspx\?ID\=69 
GET /WeeklyReport_it.aspx?ID=69 HTTP/1.1 
Accept: */* 
Accept-Encoding: gzip, deflate 
Connection: keep-alive 
Host: www.pollnet.it 
User-Agent: HTTPie/0.9.3 



HTTP/1.1 302 Found 
Content-Length: 131 
Content-Type: text/html; charset=utf-8 
Date: Sun, 07 Feb 2016 11:24:52 GMT 
Location: /default.asp 
Server: Microsoft-IIS/7.5 
X-Powered-By: ASP.NET 

<html><head><title>Object moved</title></head><body> 
<h2>Object moved to <a href="%2fdefault.asp">here</a>.</h2> 
</body></html> 

經過進一步檢查,因此可以看出,Web服務器使用會話cookie。

➜ ~ http -v http://www.pollnet.it/default_it.asp 

HTTP/1.1 200 OK 
Cache-Control: private 
Content-Encoding: gzip 
Content-Length: 9471 
Content-Type: text/html; Charset=utf-8 
Date: Sun, 07 Feb 2016 13:21:41 GMT 
Server: Microsoft-IIS/7.5 
Set-Cookie: ASPSESSIONIDSQTSTAST=PBHDLEIDFCNMPKIGANFDNMLK; path=/ 
Vary: Accept-Encoding 
X-Powered-By: ASP.NET 

這意味着每次主頁被訪問的時候,服務器會發送一個「設置Cookie」頭,指示瀏覽器設置某些Cookie。然後,每次瀏覽器要求提供每週報告時,服務器都會驗證會話cookie。

通常情況下。 requests包不會在請求之間保存cookie,但要進行抓取,我們可以使用一個Session對象,該對象將Cookie保存在頁面請求之間。

import requests 

# create a Session object 
s= requests.Session() 

# first visit the main page 
s.get("http://www.pollnet.it/default_it.asp") 

# then we can visit the weekly report pages 
r = s.get("http://www.pollnet.it/WeeklyReport_it.aspx?ID=69") 

print(r.text) 

# another page 
r = s.get("http://www.pollnet.it/WeeklyReport_it.aspx?ID=89") 
print(r.text) 

但這裏有一些建議 - 在Web服務器可能只允許具有一定Session對象固定數量的頁面(可能是10,也許15)的開放。要麼每次立即驗證r.text的結果(可能需要檢查請求主體的長度以確保它不會太小),或者每5或6頁創建一個新的Session對象。

會話更多信息對象here

+0

謝謝!有一個技巧來解決問題?如果我在Chrome瀏覽我到達資源在3個步驟: http://www.pollnet.it/default_it.asp - > http://www.pollnet.it/ReportRegional_it.aspx?ID=27 - > http://www.pollnet.it/WeeklyReport_it.aspx?ID=69 – SocraM

+1

@SocraM你想訪問哪個頁面? – Rishav

+0

我需要訪問佛羅倫薩市的數據。 在鉻我選擇鏈接「托斯卡納」地區= pollnet.it/ReportRegional_it.aspx?ID=27,然後點擊「FI1」爲 佛羅倫薩市= pollnet.it/WeeklyReport_it.aspx?ID=69 – SocraM