使用Beautiful Soup加载特定Google Maps页面时遇InvalidArgumentException错误求助
问题原因及解决办法
这个错误不是Beautiful Soup导致的,根源出在Selenium获取页面源码的环节:当你访问谷歌地图搜索biorochelou.com的结果页时,页面HTML源码里存在格式错误的十六进制转义序列(比如不完整的\x开头字符,缺少后续两位十六进制数),火狐的GeckoDriver在解析这份不规范的源码时无法处理,直接抛出了InvalidArgumentException,还没到Beautiful Soup处理的步骤。
可行的解决思路:
- 换用Chrome浏览器驱动:不同浏览器驱动对不规范HTML的容错性有差异,Chrome的Chromedriver通常能更好地处理这类有瑕疵的页面源码。
- 绕过Selenium的page_source方法:直接通过执行JavaScript获取页面源码,避免驱动解析源码时出错,代码修改如下:
# 替换原来的soup = BeautifulSoup(...)相关代码 page_source = driver.execute_script("return document.documentElement.outerHTML;") soup = BeautifulSoup(page_source, 'html.parser') - 优化页面等待逻辑:把固定的
time.sleep(3)换成更精准的等待条件,确保页面完全渲染完成,比如等待搜索结果区域加载(类名可根据实际页面调整):# 替换time.sleep(3) waitWD.until(EC.presence_of_element_located((By.CLASS_NAME, "Nv2PK")))
内容的提问来源于stack exchange,提问作者Rapid1898
相关产品推荐
相关产品推荐

