1

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

我已经尝试“会话劫持”我的 Internet Explorer 会话,以便让 URLLIB2 在 Python 中读取它,但我仍然被拒绝访问(在添加 Internet Explorer 正在使用的 ASP.NET_Sessionid 之后......)

诚然,我对互联网网络知之甚少,所以我可能在这里做错了,但我需要从 Python 访问这个网页。如果效果更好,我愿意使用另一个库。

4

1 回答 1

1

也许网页正在检查有效的请求标头?

您确实应该将 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()
于 2013-05-01T14:02:11.783 回答