为了账号安全,请及时绑定邮箱和手机立即绑定

看似“垃圾”的请求结果

看似“垃圾”的请求结果

德玛西亚99 2021-09-11 20:55:19
我有这个网页。当我尝试使用这样的requests模块获取其 html 时:import requestslink = "https://www.worldmarktheclub.com/resorts/7m/"f = requests.get(link)print(f.text)我得到这样的结果:<!DOCTYPE html><html><head><meta http-equiv="Pragma" content="no-cache"/><meta http-equiv="Expires" content="-1"/><meta http-equiv="CacheControl" content="no-cache"/><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><link rel="shortcut icon" href="data:;base64,iVBORw0KGgo="/><script>(function(){    var securemsg;    var dosl7_common;// seemingly garbage like [Z.li]+Z._j+Z.LO+Z.SJ+"(/.{"+Z.i+","+Z.Ii+"}</script><script type="text/javascript" src="/TSPD/08e841a5c5ab20007f02433a700e2faba779c2e847ad5d441605ef3d4bbde75cd229bcdb30078f66?type=9"></script><noscript>Please enable JavaScript to view the page content.</noscript></head><body></body></html>结果只显示了一部分。但是当我在浏览器中检查网页时,我可以看到正确的 html。我想页面的编码可能有问题,但无法弄清楚。使用urllib.request+read()给出了同样的错误结果。我该如何纠正这一点。提前致谢。正如@DeepSpace 所建议的,脚本中的垃圾问题是由于缩小了 JS 代码。但是为什么我没有正确获取 html?
查看完整描述

2 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

您认为的“垃圾”是混淆/缩小的 JS 代码,这些代码是用<script>标签而不是外部 JS 文件编写的。

如果你看底部f.text,你会看到<noscript>Please enable JavaScript to view the page content.</noscript>

requests不是浏览器,因此它无法执行此页面正在使用的 JS 代码,并且服务器将不允许不支持 JS 的用户代理访问它。将User-Agent标题设置为 Chrome 的 ( Chrome/60.0.3112.90) 仍然不起作用。

您将不得不求助于其他允许 JS 执行的工具,例如 selenium。


查看完整回答
反对 回复 2021-09-11
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

HTML 代码是由您看到的 Javascript 代码即时生成的。不幸的是,正如@DeepSpace 所说,请求不会执行 Javascript。

作为替代方案,我建议使用硒。它是一个模拟浏览器并因此执行 Javascript 的库。


查看完整回答
反对 回复 2021-09-11
  • 2 回答
  • 0 关注
  • 159 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号