gpt4 book ai didi

python - Selenium 返回一个页面源,其中所有标签名称都以 "a0:"为前缀

转载 作者:太空宇宙 更新时间:2023-11-04 10:32:13 25 4
gpt4 key购买 nike

我使用以下代码下载网页:

driver = webdriver.Firefox()
driver.get('https://www.SOMEWEBSITE.com')
html = driver.page_source

但有时它会得到像 <a0:td>some text</a0:td> 这样的东西这意味着它正在添加 a0:到正常的标签名称。虽然我可以做到html.replace('a0:', '') ,我仍然想找到一种没有这些额外的方法来获取源代码 a0: .

我尝试了两种方法,但都不起作用。

方法一:

import sys
reload(sys); # change the system default encoding = utf-8
eval('sys.setdefaultencoding("utf-8")')

方法二:

html = driver.page_source.encode('utf-8')

这是我正在抓取的链接,它可能会在接下来的几个小时内过期:

http://www.flightstats.com/go/FlightStatus/flightStatusByAirport.do?airportCode=LAX&airportQueryType=0

最佳答案

您遇到的问题不是编码问题。在转储源的开头,您会看到:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<a0:html xmlns:a0="http://www.w3.org/1999/xhtml" [...]

xmlns:a0="http://www.w3.org/1999/xhtml" 位声明了一个名为 a0 的命名空间。无论出于何种原因,driver.page_source 的返回值在与 Firefox 一起使用时使用 XML 命名空间。正如 alecxe 所提到的,这种行为在浏览器中并不一致。

请注意,这不是 driver.page_source 的唯一问题。一种获取页面源代码的方法是要求浏览器序列化其 DOM 树:

print driver.execute_script("return document.documentElement.outerHTML;").encode("utf-8")

这不需要您离开 Firefox。

关于python - Selenium 返回一个页面源,其中所有标签名称都以 "a0:"为前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25756436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com