问题原因:
BeautifulSoup出现”ValueError: invalid literal for int() with base 10: ‘-‘”的原因通常是由于HTML文件中包含了无法被正确解析的内容,例如负数的数字,例如 “-1” 等。
解决办法:
通常可以通过以下几种方式解决该问题:
- 删除无法解析的内容
首先检查HTML文件中是否有无法被解析的内容,如果有,将其删除或修改为正确的格式,以便BeautifulSoup可以正确地解析。
- 使用lxml解析器
尝试使用lxml解析器代替默认的解析器来解析HTML文件,lxml解析器通常能够更好地处理无法被解析的内容。
示例代码:
from bs4 import BeautifulSoup
# 使用lxml解析器
soup = BeautifulSoup(html, 'lxml')
- 当作纯文本处理
在一些情况下,我们可能并不需要解析HTML文件中的所有内容,只需要提取其中的一些文本信息,这时可以将HTML文件当作纯文本进行处理。
示例代码:
from bs4 import BeautifulSoup
# 将HTML文件当作纯文本处理
soup = BeautifulSoup(html, 'html.parser')
text = soup.get_text()
以上是针对BeautifulSoup报”ValueError: invalid literal for int() with base 10: ‘-‘”的一些常见解决办法,具体的解决方法需要根据实际情况进行调整。