2016-02-07 107 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