0

我调用了以下代码来访问一个 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()

我不确定该网址是否可以在任何地方访问,因此该页面上的内容可能并非所有人都可以访问。

该页面设置了用户可以在页面上停留多长时间的时间限制,在此之后,将显示一个弹出窗口,说明用户已达到超时。

这是我遇到的问题:当我在浏览器中输入 url 时,一切都打开了。但是当我尝试打印 Python 从该页面读取的内容时,Python 读取的页面只有在页面超时时才会弹出。

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

提前致谢。

4

1 回答 1

1

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

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

在我的浏览器中,我得到相同的超时错误。如果我刷新,该网站加载正常。但是,如果我从网站上清除我的 cookie 并重试,我会再次超时。因此,我怀疑该站点执行了一些添加时间戳并在页面可见之前对其进行检查的过程,并且如果由于某种原因无法设置 cookie,则默认为超时(就像从在 Python 脚本中)。

我建议对正在设置的 cookie 进行深入调查(从该页面上的 Javascript 开始,这似乎正在处理一些超时逻辑),然后尝试按照以下方式从抓取过程中设置 cookie:http:/ /www.testingreflections.com/node/view/5919http://stockrt.github.com/p/emulating-a-browser-in-python-with-mechanize/等。

(这绝不是要纵容 Elsevier 网站的抓取,因为它们可能会追随你并吃掉你的孩子 :))

于 2012-05-29T20:51:21.620 回答