urllib2用Â和&检索html符号/字母一次又一次,不确定如何删除它们

时间:2013-09-27 01:10:28

标签: python python-2.7 character-encoding beautifulsoup urllib2

我正在尝试使用urllib2获取页面的html并通过beautifulsoup解析它但是我遇到了html的问题,其中包含Â&amp符号/字母,例如这里是代码snippit:

<p>Total&amp;2 £100.00.<br/>Total&amp;2 £100.00<br/>Total&amp;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

1 个答案:

答案 0 :(得分:1)

我怀疑这与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版本。使用virtualenv,you can migrate your packages非常容易