请教关于 urllib.request.urlopen 方法的问题

2017-09-22 20:52:07 +08:00
 saximi
import urllib.request 

def download(url): 
    print("DOWNLOADING:",url) 
    try: 
        html=urllib.request.urlopen(url).read() 
        print(html) 
    except Exception as e: 
        print("DOWNLOAD ERROR:",e) 
        html=None 
    return html 

download("http://www.ccb.com/")

上面的代码输出如下:
DOWNLOADING: http://www.ccb.com/
b'<SCRIPT LANGUAGE="JavaScript">\n  window.location="/cn/home/indexv3.html";\n</SCRIPT>\n\n\n'

请问,这个 html 的输出从网页的源码中是找不到的,为何 html 输出后会是这样的内容?谢谢!

2255 次点击
所在节点    Python
8 条回复
misaka19000
2017-09-22 21:43:57 +08:00
➜ ~ curl http://www.ccb.com/
<SCRIPT LANGUAGE="JavaScript">
window.location="/cn/home/indexv3.html";
</SCRIPT>

没毛病
saximi
2017-09-22 21:45:54 +08:00
@misaka19000 我倒是没说这个结果有错,我只是不理解这个 html 是个什么东西,为何是显示这些内容,并且这个字符串其实并不存在于这个网页的源代码中
zhusimaji
2017-09-22 22:01:44 +08:00
@saximi 那个是 js,你要等 js 加载完才能访问到真正的网页,你应该访问这个地址 www.ccb.com/cn/home/indexv3.html
dangyuluo
2017-09-22 22:09:51 +08:00
你获取的是一小段 JS 代码,让你跳转到他们的 indexv3.html 页面。不知道这么做的意义在哪。
ffkjjj
2017-09-22 22:12:09 +08:00
@saximi
访问 http://www.ccb.com 时的默认网页源码就是你爬到的字符串内容。
通过浏览器访问到的页面是 http://www.ccb.com/cn/home/indexv3.html,那已经是重定向后的页面啦。
sola97
2017-09-22 23:24:52 +08:00
没学过 html 么。。
saximi
2017-09-23 05:44:25 +08:00
@zhusimaji
@dangyuluo
@ffkjjj 感谢大家指点,确实没有系统地学过 HTML
Telegram
2017-09-23 14:44:57 +08:00
浏览器直接访问也是这个源码,然后浏览器会自动执行这个代码,跳转到那个新的页面。
但是你的 py 不会跳,因为他不执行这个跳转的 js

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/392934

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX