首页 > 解决方案 > Chrome 的源 HTML 与 Internet Explorer 不同?

问题描述

在此处输入图像描述

在查看源下的评论时,我会根据我使用的浏览器得到不同的结果。

铬合金:

在此处输入图像描述

IE浏览器:

在此处输入图像描述 在此处输入图像描述

对 Internet Explorer 或 Chrome 使用带请求的 Python 和 User-Agent 可以得到与 Internet Explorer 相同的结果:

>>> parse_google('https://play.google.com/store/movies/details?id=s8dGvpxGuCs')
ds: 11 ; data: [[[1, None, False], [[None, [[600], None, [604800]]]]]]
>>> parse_google('https://play.google.com/store/movies/details?id=s8dGvpxGuCs')
ds: 10 ; data: [[None, None, None, None, [False], [[None, [[600], None, [604800]]]], [[u'4.7', 4.67492], [None, [u'41', 41], [u'19', 19], [u'36', 36], [u'114', 114], [u'1,042', 1042]], [u'1,252', 1252], [u'505', 505]]], [3, 1, 3, 10, 100]]

您可以使用以下代码(Chrome 用户代理)自己验证这一点:

>>> import json
>>> import requests
>>> response = requests.get('https://play.google.com/store/movies/details?id=s8dGvpxGuCs', headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'})
>>> s = json.loads(response.content.split('AF_initDataCallback({key: \'ds:11\'')[1].split('data:function(){return ')[1].split('}});')[0])
>>> print s
[[[1, None, False], [[None, [[600], None, [604800]]]]]]

附言

我在 Microsoft 的商店中也注意到了这一点,其中 Chrome 显示 div 标签,Internet Explorer 显示部分标签。

标签: python

解决方案


Oldskool Internet Explorer 与一些现代 HTML5 细节不兼容,例如<section>标签等。

因此,想要支持旧版浏览器的网站如果检测到旧版浏览器,可能会生成旧样式的 HTML 和一些 JS polyfill。


推荐阅读