【发布时间】:2017-02-18 17:56:32
【问题描述】:
我在 python 中使用 BS4 解析一个 html 表。一切正常,我能够识别我需要的所有元素并打印它们。但是程序停止工作,然后我尝试将结果写入文本文件。我收到此错误:
"UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position 13: ordinal not in range(128)"
我尝试在写入命令中使用 .encode('utf-8') 但我得到了这样的写法:31.61¬†
这就是我正在运行的内容。我使用代码结构来解析另一个表并且它有效。如果有人能指出我正确的方向,我将不胜感激。
from threading import Thread
import urllib2
import re
from bs4 import BeautifulSoup
url = "http://trackinfo.com/dog-racelines.jsp?page=1&runnername=Ww%20Gloriaestefan"
myfile = open('base/basei/' + url[57:].replace("%20", " ").replace("%27","'") + '.txt','w+')
soup = BeautifulSoup(urllib2.urlopen(url).read())
for tr in soup.find_all('tr')[0:]:
tds = tr.find_all('td')
if len(tds) >=0:
print tds[0].text, ",", tds[4].text, ",", tds[7].text, ",", tds[12].text, ",", tds[14].text, ",", tds[17].text
myfile.write(tds[0].text + ','+ tds[4].text + "," + tds[7].text + "," + tds[12].text + "," + tds[14].text + "," + tds[17].text)
myfile.close()
【问题讨论】:
-
我在 Windows 7 和 Ubuntu 上都尝试过您的代码,但无法显示格式错误的字符;我只是在 31 之后得到一个空格。也许你应该添加更多关于你如何运行代码的细节(操作系统、你如何运行你的脚本以及你如何查看文本文件)。否则,您可以尝试stackoverflow.com/questions/10993612/… 中的建议之一,只是破坏数据以提交。
-
我在mac os雪豹终端中使用python
-
问题是我解析的标签(
31.14 )有这个 。在文本之后留下一个空格,它会扰乱写作并产生问题。我不知道如何绕过或删除标签中的这个  
标签: python web-scraping beautifulsoup html-table fwrite