强制python http请求刷新

时间:2012-07-17 16:38:06

标签: python http caching web-scraping

我是python的新手,并没有找到任何暗示这可能已经死了的东西。

我正在废弃的页面非常简单,但它每2分钟完全更新一次。我已设法废弃所有数据,但问题是,即使程序每2分钟运行一次(我已尝试通过taskeng.exe并在脚本中循环),它从网站上拉的html似乎每12个刷新一次分钟。为了清楚起见,我正在废弃的网站在更新时有一个时间戳。我的程序拉出该标记(以及其他数据)并写入csv文件。但它在12分钟内拉出相同的数据然后突然数据到达。所以输出看起来像:

16:30, Data1, Data2, Data3
16:30, Data1, Data2, Data3
...
16:30, Data1, Data2, Data3
16:42, Data1, Data2, Data3
16:42, Data1, Data2, Data3

应该在哪里:

16:30, Data1, Data2, Data3
16:32, Data1, Data2, Data3
16:34, Data1, Data2, Data3
16:36, Data1, Data2, Data3
16:38, Data1, Data2, Data3
16:40, Data1, Data2, Data3
16:42, Data1, Data2, Data3

我认为这与myside上的缓存有关。如何强制我的http请求完全刷新或强制python不将其存储在缓存中?

我正在使用BeautifulSoup和Mechanize。我的http请求代码如下:

mech = Browser()

url = "http://myurl.com"

page = mech.open(url)

html = page.read()
soup = BeautifulSoup(html)

如果发布我的所有代码都有帮助,我可以这样做。提前感谢任何建议

1 个答案:

答案 0 :(得分:0)

您可以使用更简单的工具,例如requests

import requests
response = requests.get(url)
html = response.text

但是如果你真的想坚持使用机械化,你也可以跳过Browser()的东西(这可能会在你的请求中引入cookie)。查看mechanize docs了解详情。

response = mechanize.urlopen("http://foo.bar.com/")
html = response.read() # or readlines