我正在用 python 开发一个网络爬虫。这是我的代码:from selenium.webdriver.chrome.options import Optionsfrom selenium import webdriverfrm bs4 import BeautifulSoupchrome_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_sourcesoup = 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。但程序只是继续运行并且不返回任何东西。
1 回答
侃侃尔雅
TA贡献1801条经验 获得超15个赞
这是 page_source 方法的限制。
并查看源代码:
从接口复制的描述:WebDriver 获取最后加载页面的源。如果页面在加载后被修改(例如,通过 Javascript),则不能保证返回的文本是修改后的页面的文本。请查阅所使用的特定驱动程序的文档,以确定返回的文本是否反映了页面的当前状态或 Web 服务器上次发送的文本。返回的页面源是底层 DOM 的表示:不要期望它以与 Web 服务器发送的响应相同的方式进行格式化或转义。将其视为艺术家的印象。
添加回答
举报
0/150
提交
取消