Unable to extract data from BeautifulSoup object after utf-8 conversion due to 'str' typecasting
我正在尝试用python构建自己的web scraper。其中一个步骤涉及解析HTML页面,我使用的是BeautifulSoup,这是大多数教程中推荐的解析器。这是我的代码,它应该提取页面并打印出来:
1 2 3 4 5 6 7 8 9 | import urllib from bs4 import BeautifulSoup urlToRead ="http://www.randomjoke.com/topic/haha.php" handle = urllib.urlopen(urlToRead) htmlGunk = handle.read() soup = BeautifulSoup(htmlGunk,"html.parser") soup = soup.prettify() print (soup) |
但是,当我执行
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa9' in
position 16052: ordinal not in range(128)
为了解决这个问题,我在谷歌上搜索了更多,找到了解决这个问题的答案。我基本上必须将编码设置为我所设置的
1 2 | soup = soup.prettify().encode('utf-8') print (soup) |
这个很好用。当我尝试使用本教程中提到的
AttributeError: 'str' object has no attribute 'get_text'
我认为这是意料之中的,因为我将汤编码为"utf-8",它将把汤改成一个
我怎么解决这个问题?我很确定我做错了什么,有一个合适的方法来解决这个问题。不幸的是,我不太熟悉python,所以请耐心等待
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | import urllib from bs4 import BeautifulSoup urlToRead ="http://www.randomjoke.com/topic/haha.php" handle = urllib.urlopen(urlToRead) htmlGunk = handle.read() soup = BeautifulSoup(htmlGunk,"html.parser") html_code = soup.prettify().encode('utf-8') text = soup.get_text().encode('utf-8') print html_code print"#################" print text # a = soup.find() # l = [] # for i in a.next_elements: # l.append(i) |
你不应该丢弃你原来的