Python:urlopen没有下载完整的网站
你好,
我做了以下操作:
import urllib
site = urllib.urlopen('http://www.weather.com/weather/today/Temple+TX+76504')
site_data = site.read()
site.close()
但是在火狐浏览器中查看源代码时,效果还是不一样。
我怀疑是用户代理的问题,于是我尝试了这个:
class AppURLopener(urllib.FancyURLopener):
version = "Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.9.2.8) Gecko/20100722 Ubuntu/10.04 (lucid) Firefox/3.6.8"
urllib._urlopener = AppURLopener()
然后我下载了它,但还是没有下载完整个网站。
有没有人能帮我切换用户代理,如果这真的是问题所在的话?
谢谢,
Narnie
2 个回答
2
下载后在本地显示的页面可能会因为几个原因而看起来不同,比如页面中有相对链接(可以通过在页面的头部添加例如 <base href="http://www.weather.com/today/">
来修复),或者有些 ajax 请求无法正常工作(可以参考 绕过同源政策的方法)。
3
很可能代码里有一个iframe
,或者是javascript在修改网页的结构。如果有iframe,你需要解析页面来获取iframe的链接,或者如果只是偶尔需要一次,可以手动去做。如果是javascript的话,我听说selenium-rc挺好用的,但我自己没有亲身使用过。