python selenium webdriver 不显示所有 html

我正在用 python 开发一个网络爬虫。


这是我的代码:


from selenium.webdriver.chrome.options import Options

from selenium import webdriver

frm bs4 import BeautifulSoup


chrome_options = Options()

chrome_options.add_argument("--headless")


driver = webdriver.Chrome(options=chrome_options)

driver.get("https://www.hapag-lloyd.com/en/home.html")


source = driver.page_source

soup = BeautifulSoup(source, 'html.parser')


print(soup)

但返回的 html 与我在浏览器上看到的不同(请检查最后几行):


<html><head>

<meta content="no-cache" http-equiv="Pragma"/>

<meta content="-1" http-equiv="Expires"/>

<meta content="no-cache" http-equiv="CacheControl"/>

<meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>

<link href="data:;base64,iVBORw0KGgo=" rel="shortcut icon"/>

<script>


(function(){

window["bobcmn"] = "111110101010102000000022000000052000000002a4b927ad200000096300000000300000000300000006/TSPD/300000008TSPD_101300000005https3000000b0081ecde62cab2000d65f90c7efd5185e314a8800e00a5aad11b1a439eb174c6c3f64d45284e14d9508dcf0830d0a2800346a2db5907272d4309ad725a7dc856ab98589c10724bd284477ca152744f4ac2102b44d72e2a1e9200000000200000000";

SS(RegExp("\x3c")[l(1372127,sZ)](function(){return"\x3c"})&!RegExp(l(42811,sZ))[l(1372127,sZ)](function(){return"'x3'+'d';"}));


})();


</script>

<script src="/TSPD/081ecde62cab200082f75af3905bec19af31f4aaf7bd4079c3ac5a62a6fb4096cfcec166097ddde7?type=7" type="text/javascript"></script>

<noscript>Please enable JavaScript to view the page content.<br/>Your support ID is: 17324345507588527622.</noscript>

</head><body>

<form action="" enctype="multipart/form-data" method="post"><input name="_pd" type="hidden" value=""/></form></body></html>

它报告“请启用 JavaScript 以查看页面内容。

您的支持 ID 是:17324345507588527622。”。


我查了一些其他人发起的查询。这个问题应该通过使用chrome来解决。


我还尝试使用 requests-html 获取 html。但程序只是继续运行并且不返回任何东西。


白猪掌柜的
浏览 191回答 1
1回答

侃侃尔雅

这是 page_source 方法的限制。并查看源代码:从接口复制的描述:WebDriver 获取最后加载页面的源。如果页面在加载后被修改(例如,通过 Javascript),则不能保证返回的文本是修改后的页面的文本。请查阅所使用的特定驱动程序的文档,以确定返回的文本是否反映了页面的当前状态或 Web 服务器上次发送的文本。返回的页面源是底层 DOM 的表示:不要期望它以与 Web 服务器发送的响应相同的方式进行格式化或转义。将其视为艺术家的印象。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript