2017-01-19 5 views
0

Hallo, ich schreibe Scraping-Code, aber wenn ich versuche, alle Absatz von Website bekommen, geben Sie mir folgenden Fehler Unicode Encode Fehler: Charmap kann Zeichen '\ xa9' nicht codierenUnicode-Encodefehler: Charmap kann Zeichen xa9 in Python nicht codieren

hier ist mein Code:

#Loading Libraries 
 
import urllib 
 
from urllib.parse import urlparse 
 
from urllib.parse import urljoin 
 
import urllib.request 
 
from bs4 import BeautifulSoup 
 

 
#define URL for scraping 
 
newsurl = "http://www.techspot.com/news/67832-netflix-exceeds-growth-expectations-home-abroad-stock-soars.html" 
 
thepage = urllib.request.urlopen(newsurl) 
 

 
soup = BeautifulSoup(thepage ,"html.parser") 
 

 
article = soup.find_all('div' , {'class','articleBody'}) 
 

 
for pg in article: 
 
\t paragraph = soup.findAll('p') 
 
\t ptag = paragraph 
 
\t print(ptag)
Fehler I folgt bin immer:

enter image description here

Lassen Sie mich, wie dieser Fehler

+0

Versuchen Sie nicht, Konsole zu drucken, die nicht Unicode anzeigen kann. Stattdessen zum Beispiel in eine Datei mit UTF-8-Codierung schreiben. Auch 'ptag' ist keine Zeichenkette und daher auch keine Verschlüsselungsmethode. Du könntest 'str (ptag) .encode ('ascii', 'ignore')' versuchen. – mkiever

+1

BTW. Drucken von Unicode zu Konsole ist höchstwahrscheinlich bereits auf SO beantwortet. Möglicherweise ein Duplikat. – mkiever

+0

fidn wie utf-8 (cp65001) in der Konsole eingestellt wird. – furas

Antwort

0

soup.findAll() gibt ein ResultSet Objekt, das im Grunde eine Liste zu entfernen, die kodieren kein Attribut hat. Entweder soll stattdessen verwenden .text:

text = soup.text 

Oder "join" die Texte:

text = "".join(soup.findAll(whatever, you, want)) 
Verwandte Themen