我正在尝试在NDTV网站上搜索新闻标题。这是我用作 HTML 源的页面。我正在使用 BeautifulSoup (bs4) 来处理 HTML 代码,并且一切正常,除了当我在链接到的页面中遇到印地语标题时我的代码中断。
到目前为止,我的代码是:
import urllib2
from bs4 import BeautifulSoup
htmlUrl = "http://archives.ndtv.com/articles/2012-01.html"
FileName = "NDTV_2012_01.txt"
fptr = open(FileName, "w")
fptr.seek(0)
page = urllib2.urlopen(htmlUrl)
soup = BeautifulSoup(page, from_encoding="UTF-8")
li = soup.findAll( 'li')
for link_tag in li:
hypref = link_tag.find('a').contents[0]
strhyp = str(hypref)
fptr.write(strhyp)
fptr.write("\n")
我得到的错误是:
Traceback (most recent call last):
File "./ScrapeTemplate.py", line 30, in <module>
strhyp = str(hypref)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-5: ordinal not in range(128)
即使我没有包含from_encoding
参数,我也会遇到同样的错误。我最初将它用作fromEncoding
,但 python 警告我它已被弃用。
我该如何解决?从我读过的内容来看,我需要避免使用印地语标题或将其明确编码为非 ascii 文本,但我不知道该怎么做。任何帮助将不胜感激!