我正尝试用beautifulsoup解析youtube,但没有运气。 我解析了许多网站,这些网站的运行都非常完美,但是这些网站无法正常工作,并给了我这个错误:
UnicodeEncodeError: 'charmap' codec can't encode character '\u2117' in position 135588: character maps to <undefined>
我将其解码如下:
page_soup = soup(page_html.decode("utf-8"), "html.parser")
x = page_soup.find('div',{'id':"dismissable"})
我仍然收到上面的错误。 但是当我尝试这个:
代码:
page_soup = soup(page_html, "html.parser").encode("utf-8")
通过编码,我可以打印出我的网页,但是当我按以下方式对其进行搜索时:
search_list = page_soup.find_all('div',{'class':"style-scope ytd-video-renderer"})
print(len(search_list))
我收到以下错误消息:
TypeError: slice indices must be integers or None or have an __index__ method
任何建议都将受到欢迎。
非常感谢。
另外,我的代码:
import urllib3
from bs4 import BeautifulSoup as soup
from urllib.request import urlopen
import requests
http = urllib3.PoolManager()
set_Link = set([''])
url = 'https://www.youtube.com/results?search_query=the+lumineers+sleep+on+the+floor'
r = http.request('get',url)
page_html = r.data #html data opslaan in variabele
page_soup = soup(page_html, "html.parser").encode("utf-8")
print(page_soup)
search_list = page_soup.find_all('div',{'class':"style-scope ytd-video-renderer"})
print(len(search_list))
答案 0 :(得分:2)
您的代码在错误的位置应用了decode()
,因此是例外情况:
page_soup = soup(page_html.decode("utf-8"), "html.parser")
答案 1 :(得分:0)
对于问题的前半部分,仅提供一些建议-您应该使用“ unicode三明治”方法,这样可以避免很多麻烦:
print()
,请使用print(repr(string))
您的第一个问题UnicodeEncodeError-是在字符串上使用print语句的结果吗?如果是这样,则打印如下:
print(repr(string))
为避免编码问题,并将数据以unicode的形式保存到最后。
即不要这样做:page_soup = soup(page_html, "html.parser").encode("utf-8")
只是为了打印出结果。