我正在尝试使用 urllib2 获取页面的 html 并通过 beautifulsoup 对其进行解析,但我遇到了具有 Â 的 html 的问题和 &符号/字母无处不在,例如这里是一个代码片段:
<p>Total&2 £100.00.<br/>Total&2 £100.00<br/>Total&2 £100.00</p>
我无法删除 Â使用剥离或替换...
获取html的代码是:
html = urllib2.urlopen("http://www.websitehere.com", timeout=10).read().decode('UTF-8')
soup = BeautifulSoup(html)
有人能帮忙吗?
编辑
我已经尝试了各种解码,也尝试了位于:How to make the python interpreter correctly handle non-ASCII characters in string operations? 中的所有内容。但仍然没有:/
谢谢 - Hyflex
请您参考如下方法:
我怀疑这与 BS 用来读取 HTML 的解析器有关。他们 document it here但如果你像我一样(在 OSX 上),你可能会遇到一些需要做一些工作的事情:
您会注意到在上面的 BS4 文档页面中,他们指出默认情况下 BS4 将使用 Python 内置的 HTML 解析器。假设您在 OSX 中,Apple 捆绑的 Python 版本是 2.7.2,它对字符格式设置并不宽松。我遇到了同样的问题,所以我升级了 Python 版本来解决它。在 virtualenv 中执行此操作将最大限度地减少对其他项目的干扰。
如果这样做听起来很痛苦,您可以切换到 LXML 解析器:
pip install lxml
然后尝试:
soup = BeautifulSoup(html, "lxml")
根据您的情况,这可能就足够了。我发现这很烦人,需要升级我的 Python 版本。使用虚拟环境,you can migrate your packages相当容易
