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

BeautifulSoup - brak polskich znaków, ale tylko z jednej strony.
DR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 9
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.

AN
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 989
0

Zarzuć stronę i przykład

DR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 9
0
Kopiuj
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")
lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5025
1

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

Kopiuj
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)
DR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 9
0
lion137 napisał(a):

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

Kopiuj
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

Kopiuj
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 :)

DR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 9
0

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

Kopiuj
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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.