【发布时间】:2015-01-23 17:38:27
【问题描述】:
我一直在使用以下代码,试图提取此网页的文本元素。
site= 'http://football.fantasysports.yahoo.com/f1/1785/4/team?&week=4'
print site
response = urllib2.urlopen(site)
html = response.read()
soup = BeautifulSoup(html)
position = soup.find_all('span', class_="Fz-xxs")
for j in range(0,13):
positionlist = str(position[j].get_text())
print (positionlist)
不幸的是,被放入位置列表字符串的文本本身包含许多无法编码的连字符(即:SEA-RB)。当我尝试按原样运行代码时,我得到以下响应:
Traceback (most recent call last):
File "/Users/masongardner/Desktop/TestSorter.py", line 20, in <module>
positionlist = str(position[j].get_text())
UnicodeEncodeError: 'ascii' codec can't encode character u'\ue002' in position 0: ordinal not in range(128)
我知道连字符无法编码,但我不确定如何更改编码,以便在可能的情况下让 unicode 解释连字符,或者忽略连字符并仅对每个字符之前和之后的文本进行编码实例。这个项目纯粹是为了我自己的使用,所以黑客的方法不是问题!
谢谢大家!
【问题讨论】:
-
您可以使用翻译表,然后编码为 ascii。看看这个related question。
标签: python python-2.7 unicode-string