无法使用python urllib.urlopen()或Shiretoko以外的任何Web浏览器获取网站

时间:2010-03-11 01:03:06

标签: python beautifulsoup urllib

以下是我要提取的网站的网址

https://salami.parc.com/spartag/GetRepository?friend=jmankoff&keywords=antibiotic&option=jmankoff%27s+tags

当我使用以下代码获取网站并使用以下代码显示内容时:

sock = urllib.urlopen("https://salami.parc.com/spartag/GetRepository?friend=jmankoff&keywords=antibiotic&option=jmankoff's+tags")
html = sock.read()
sock.close()
soup = BeautifulSoup(html)
print soup.prettify()

我得到以下输出:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
 <head>
  <title>
   Error message
  </title>
 </head>
 <body>
  <h2>
   Invalid input data
  </h2>
 </body>
</html>

我也得到了与urllib2相同的结果。现在有趣的是,此URL仅适用于Shiretoko Web浏览器v3.5.7。 (当我说它有效时,我的意思是它给我带来了正确的页面)。当我将此URL提供给Firefox 3.0.15或Konqueror v4.2.2时。我得到完全相同的错误页面(“输入数据无效”)。我不知道是什么造成了这种差异以及如何使用Python获取此页面。有什么想法吗?

由于

2 个答案:

答案 0 :(得分:2)

如果您看到urllib2文档,则说明

urllib2.build_opener([handler, ...])¶

    .....
    If the Python installation has SSL support (i.e., if the ssl module can be imported), HTTPSHandler will also be added. 

    .....

您可以尝试将urllib2与ssl模块一起使用。或者,您可以使用httplib

答案 1 :(得分:0)

当您点击带有webbrowser的链接时,这正是您所获得的。也许你应该登录或设置cookie或其他东西

我在linux上获得了与firefox 3.5.8(shiretoko)相同的消息