使用Python BS4抓取HTML表格时特殊格式数字的处理问题
解决BS4抓取表格时数字含\xa0的显示问题
嘿,我来帮你搞定这个小麻烦!你遇到的\xa0其实是HTML里的非断空格(对应网页源码里的 ),表格里显示的空格就是它,但Python直接输出的时候会显示成\xa0而非正常空格,所以看起来异常。
两种解决方案,按需选择:
方案1:输出和表格形式完全一致(保留空格)
只需要把抓取到的文本里的\xa0替换成普通空格就行,修改你的代码如下:temp = [] a = soup.findAll('tr')[1] for td in a.find_all("td"): # 把非断空格替换成普通空格,和表格显示一致 formatted_text = td.text.replace('\xa0', ' ') temp.append(formatted_text)这样
a.findAll('td')[10].text处理后就会变成'24 081 728',和表格里的显示一模一样。方案2:去掉空格得到纯数字值
如果需要把它转成实际的数值(比如24081728),就把\xa0替换为空字符串,还可以转成整数类型:temp = [] a = soup.findAll('tr')[1] for td in a.find_all("td"): # 移除非断空格,得到纯数字字符串 num_text = td.text.replace('\xa0', '') # 可选:转成整数 num = int(num_text) temp.append(num)
补充说明
网页里为了防止数字在空格处换行,经常会用 代替普通空格,BS4解析时会将其转换成Unicode字符\xa0,所以只要做个简单的字符串替换就能解决问题啦~
内容的提问来源于stack exchange,提问作者Ahmed Meeran
相关产品推荐
相关产品推荐

