【发布时间】:2011-01-09 10:30:57
【问题描述】:
在我的程序的较大规模中,以下代码的目标是过滤掉网页源代码中的所有动态 html
代码sn-p:
try:
deepreq3 = urllib.request.Request(deepurl3)
deepreq3.add_header("User-Agent","etc......")
deepdata3 = urllib.request.urlopen(deepurl3).read().decode("utf8", 'ignore')
下面的代码循环了3次,以判断目标网页是否为Dynamic(源代码间隔变化)。
如果页面是动态的,上面的代码会再循环 15 次并尝试过滤掉动态内容。
问题:
虽然这种过滤方法在 80% 的情况下都有效,但某些页面会重新加载 15 次,并且仍然包含动态代码。然而。如果我手动关闭 Python Shell 并重新执行我的程序,我的“刷新页面方法”无法摆脱的动态 html 将不再存在......它已被我的“刷新页面”替换为新的动态 html方法'无法摆脱。所以我需要知道,这里发生了什么?重新运行我的程序如何导致页面的动态内容发生变化。而且,有什么办法,我可以使用任何“重置连接”命令来重新创建这个......而无需手动重新启动我的应用程序。
感谢您的回复。
更新:
我制作了一个 minu 可执行 html 抓取器,我从主脚本循环运行它。它解决了这个问题,但我仍然很好奇我为什么需要这样做。
【问题讨论】:
-
看起来可疑地像一个缓存问题。考虑添加
.add_header('cache-control': 'no-cache')。 -
谢谢 9000。我希望你的方法能奏效,但它没有。 .add_header('cache-control': 'no-cache') - 导致错误 .add_header('cache-control:', 'no-cache') - 没有错误,但不能解决我的问题。感谢您对它的破解。还有其他人吗?
-
调试正在发生的事情:
print connection.headers和任何其他信息,以查看重新启动 shell 时发生的变化。如果你能给出一个示例 URL 和确切的代码,我会检查出来。
标签: python python-3.x urllib