python - 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 显示部分标签。
解决方案
Oldskool Internet Explorer 与一些现代 HTML5 细节不兼容,例如<section>
标签等。
因此,想要支持旧版浏览器的网站如果检测到旧版浏览器,可能会生成旧样式的 HTML 和一些 JS polyfill。
推荐阅读
- python - 如何在pandas python中查找和匹配来自不同数据帧的特定值
- python - 对字典进行排序,然后通过排名替换值
- node.js - nodejs中如何根据条件编写多个返回条件
- mysql - Mysql - 获取列值是除特定值之外的所有内容的记录
- python - 如果字符串值由字符和数字组成,是否有返回 True 的字符串方法?
- bash - 适用于 Windows 的 Linux 子系统 - shell 脚本 scp 将所有文件重命名为“.”
- home-assistant - 根据 Homeassistant 控制的湿度读数打开风扇
- python - 无法更新 us-central1 中的加密密钥
- amazon-web-services - IAM 角色 - AssumeRolepolicy 包含无效的委托人:“STAR”:“*”
- javascript - 在我的 db.collection forEach 上使用 Promise.all