2012-05-29 132 views
0

我叫下面的代码访问的URL,并试图打印页面上的内容:我不知道如果URL访问无处不Python-超时读取URL时

import urllib2 
f = urllib2.urlopen("https://www.reaxys.com/reaxys/secured/customset.do?performed=true&action=get_preparations&searchParam=1287039&workflowId=1338317532514&workflowStep=1&clientDateTime=2012-05-29%2015:17") 
page = f.read() 
print page 
f.close() 

,所以每个人都无法访问该网页上的内容。

此页面设置用户可以停留在页面上的时间限制,在此之后,弹出窗口显示用户已达到超时时间。

下面是我碰到的问题: 当我在浏览器中输入网址时,一切都打开了。但是,当我尝试打印Python从该页面读取的内容时,Python会读取仅在页面达到超时时弹出的页面。

我不知道什么是错,是Python还是网站?我如何让Python读取该页面上的实际内容?

在此先感谢。

回答

1

它似乎与网站设置的cookie有关。如果我访问的网址是

https://www.reaxys.com/reaxys/secured/customset.do?performed=true&action=get_preparations&searchParam=1287039&workflowId=1338317532514&workflowStep=1 

在我的浏览器中,我得到相同的超时错误。如果我刷新,网站加载正常。但是,如果我从网站清除我的Cookie并重试,我又会收到超时。所以,我怀疑该网站是执行一些过程,添加一个时间戳,并在页面可见之前检查它,并且如果由于某种原因不能设置cookie,则默认为超时(如将访问在Python脚本中)。

我会建议对cookies进行深入调查(从该页面上的Javascript开始,这似乎是处理某些超时逻辑),然后尝试根据每次抓取过程设置Cookie :http://www.testingreflections.com/node/view/5919,http://stockrt.github.com/p/emulating-a-browser-in-python-with-mechanize/等。

(这绝不是为了容忍Elsevier网站的刮蹭,因为他们可能会追随你并且吃掉你的年轻人:))