BeautifulSoup报”ValueError: invalid literal for int() with base 10: ‘–’ “的原因以 及解决办法

yizhihongxing

问题

在使用BeautifulSoup库解析HTML文档时,若HTML文档中遇到转义字符“——”(即“-”字符)时,会报“ValueError: invalid literal for int() with base 10: '——' ”的错误。

原因

该错误是由于”——”字符被当做int类型的参数传入int()函数,而“——”无法被转换为整型,从而导致整型转换异常。

解决方法

在解决该问题前,需要先了解转义字符”——”和“-”字符的区别:在HTML中,“——”是一种特殊的转义字符,代表一种长破折号,而“-”字符是普通的破折号。

因此,要解决该问题,可以将所有的“——”字符替换为普通的“-”字符。具体实现如下:

使用replace()方法将所有的“——”字符替换为普通的“-”字符

html_doc = html_doc.replace('——', '-')
soup = BeautifulSoup(html_doc, 'html.parser')

在BeautifulSoup构造函数中设置字符编码,避免出现字符编码错误:

soup = BeautifulSoup(html_doc, 'html.parser', from_encoding='utf-8')

通过上述方法,即可很好地解决“ValueError: invalid literal for int() with base 10: '——' ”的问题。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:BeautifulSoup报”ValueError: invalid literal for int() with base 10: ‘–’ “的原因以 及解决办法 - Python技术站

(0)
上一篇 2023年3月20日
下一篇 2023年3月20日

相关文章

合作推广
合作推广
分享本页
返回顶部