我目前正在编写一个脚本,该脚本涉及(希望)屏幕从适合我工作场所的网页上抓取许多数据。它是一个ASP.NET页面,在Chrome或Internet Explorer上查看时根本不需要登录。

我尝试通过Internet Explorer会话进行“会话劫持”,以使其可以通过Python中的URLLIB2读取,但是仍然无法访问(在添加Internet Explorer使用的ASP.NET_Sessionid之后...)

我承认我对互联网网络了解甚少,因此我在这里可能做错了什么,但是我需要从Python访问此网页。我愿意使用另一个更好的库。

最佳答案

网页可能正在检查有效的请求标头?

您确实应该将pycurl用于此类作业。

#!/usr/bin/env python
import pycurl
import cStringIO
buf = cStringIO.StringIO()

pycurl_headers = ['Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
                  'Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3',
                  'Accept-Language:en-US,en;q=0.8,bg;q=0.6',
                  'User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 \
                  (KHTML, like Gecko) Chrome/26.0.1410.43 Safari/537.31']


c = pycurl.Curl()
c.setopt(c.URL, 'http://google.com')
c.setopt(c.WRITEFUNCTION, buf.write)
c.setopt(c.AUTOREFERER, 1)
c.setopt(c.FOLLOWLOCATION , True)
c.setopt(c.CONNECTTIMEOUT, 5)
c.setopt(c.TIMEOUT, 5)
c.setopt(c.HTTPHEADER, pycurl_headers)
c.perform()

print buf.getvalue()
buf.close()

10-08 20:24