miért húr repedt?

szavazat
-2

És én ragadtam probléma, itt van:

from lxml.html import parse
from urllib2 import urlopen
import codecs

parsed = parse(urlopen('http://lakgsa.org/?page_id=18'))
doc = parsed.getroot()
links = doc.findall('.//div/a')
print(links[15:20])
lnk=links[3]
lnk.get('href')
print(lnk.get('href'))
print(lnk.text_content())
with codecs.open('hey.json', 'wb', encoding='utf-8') as file:
    file.write(lnk.text_content())

És fut e fölött, az én ubuntu terminál és a „hey.json” show követi ezt.

'[Recruitment] ë§ì'ë¤ì¤ìì'í ° 2016ë ê¸ë¡ë² i i ê³μì ± ëª¨ì§ ê³μê³'

A betűtípus szünet. Tudom, hogy ez kódoló problémát. De bármi is megpróbálok más megoldást, nem sikerült.

A kérdést 01/10/2015 07:08
a forrás felhasználó
Más nyelveken...                            


1 válasz

szavazat
0

A probléma az, hogy te vagy a kettős kódolás - A tartalom a távoli forrás már UTF-8, akkor, amikor írsz ez éppen kódolt újra.

A leggyorsabb módja annak, hogy kezelni ezt, hogy távolítsa el encoding=utf-8a kimeneti fájl open().

A helyes módja, hogy ez lehet átalakítani a bemenő áramot Unicode alapján a távoli szerver Charset meghatározása. A legegyszerűbb módja ennek az, használjon python-kérelem és annak response.textterületén.

from lxml.html import parse
import requests
import io

url = 'http://lakgsa.org/'
params = {'page_id': '18'}

response = requests.get(url, params)
parsed = parse(response.text)
doc = parsed.getroot()

links = doc.findall('.//div/a')
print(links[15:20])
lnk=links[3]
lnk.get('href')
print(lnk.get('href'))
print(lnk.text_content())

# io should be used instead of codecs
# you don't need the 'b' mode
with io.open('hey.json', 'w', encoding='utf-8') as file:
    file.write(lnk.text_content())

Lehet, hogy érdemes BeautifulSoup, ami nagyon jó Unicode támogatással.

Válaszolt 01/10/2015 09:12
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more