BeautifulSoup - brak polskich znaków, ale tylko z jednej strony.

0

Cześć,

ostatnio zacząłem uczyć się pythona i beautifulsoup. Napisałem prosty skrypt, który wypisuje mi w konsoli, to co mnie interesuje. Wszystko działa pięknie. Przerobiłem skrypt pod inną stronę, wypisuje, co ma wypisywać, ale niestety bez polskich znaków. Przeszukałem neta, próbowałem z encode, decode, nic nie pomaga. Ogólnie z polskich stron wszystko jest ok, ta strona jest zagraniczna, gdzie jest wiele tekstów w różnych językach, może to ma jakieś znaczenie? Na stronie jest komunikat "All pages now use Unicode (UTF-8) fonts", w źródle strony wyświetla polskie znaki.
Dzięki za pomoc.

0

Zarzuć stronę i przykład

0
import requests
from bs4 import BeautifulSoup

url = "http://www.uebersetzung.at/twister/pl.htm"

req = requests.get(url)
soup = BeautifulSoup(req.text, "html.parser")

twisters = soup.findAll("p", class_="TXT")

for twist in twisters:
	print(twist.text + "\n")
1

Robiąc to przy użyciu nltk, czyta poprawnie:

from urllib import request
import nltk
from nltk.tokenize import word_tokenize
from bs4 import BeautifulSoup
url = "http://www.uebersetzung.at/twister/pl.htm"
html = request.urlopen(url).read().decode('UTF-8')
raw = BeautifulSoup(html, "html.parser").get_text()
tokens = word_tokenize(raw)
text = nltk.Text(tokens)
0
lion137 napisał(a):

Robiąc to przy użyciu nltk, czyta poprawnie:

from urllib import request
import nltk
from nltk.tokenize import word_tokenize
from bs4 import BeautifulSoup
url = "http://www.uebersetzung.at/twister/pl.htm"
html = request.urlopen(url).read().decode('UTF-8')
raw = BeautifulSoup(html, "html.parser").get_text()
tokens = word_tokenize(raw)
text = nltk.Text(tokens)

dzięki

przerobiłem na coś takiego

from urllib import request
from bs4 import BeautifulSoup

url = "http://www.uebersetzung.at/twister/pl.htm"

req = request.urlopen(url).read().decode('UTF-8')
soup = BeautifulSoup(req, "html.parser")

twisters = soup.findAll("p", class_="TXT")

for twist in twisters:
	print(twist.text + "\n")

i też czyta dobrze :)

0

dobra, już wiem, co było źle z moim oryginalnym kodem, Twój post mnie nakierował
wystarczy dodać encoding = "utf-8"

import requests
from bs4 import BeautifulSoup

url = "http://www.uebersetzung.at/twister/pl.htm"

req = requests.get(url)
req.encoding = "utf-8"

soup = BeautifulSoup(req.text, "html.parser")

twisters = soup.findAll("p", class_="TXT")

for twist in twisters:
    print(twist.text + "\n")

dzięki za pomoc

1 użytkowników online, w tym zalogowanych: 0, gości: 1