我调用以下代码访问网址并尝试在该网页上打印内容:
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读取该页面上的实际内容?
提前致谢。
答案 0 :(得分:1)
它似乎与网站设置的Cookie有关。如果我访问网址
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/5919,http://stockrt.github.com/p/emulating-a-browser-in-python-with-mechanize/等。
(这绝不是为了宽恕Elsevier网站的刮痧,因为它们可能会在你之后吃掉你的年轻人:))