Я пытался написать небольшой скребок на Python, используя BeautifulSoup.Все идет гладко, пока я не попытаюсь напечатать (или записать в файл) строки, содержащиеся в различных элементах HTML.Сайт, который я собираю: http://www.yellowpages.ca/search/si/1/Boots/Montreal+QC, который содержит различные французские символы.По какой-то причине, когда я пытаюсь распечатать содержимое в терминале или в файл, вместо того, чтобы декодировать строку, как это должно быть, я получаю необработанный вывод Unicode.Вот сценарий:
from BeautifulSoup import BeautifulSoup as bs
import urllib as ul
##import re
base_url = 'http://www.yellowpages.ca'
data_file = open('yellow_file.txt', 'a')
data = ul.urlopen(base_url + '/locations/Quebec/Montreal/90014002.html').readlines()
bt = bs(str(data))
result = bt.findAll('div', 'ypgCategory')
bt = bs(str(result))
result = bt.findAll('a')
for tag in result:
link = base_url + tag['href']
##print str(link)
data = ul.urlopen(link).readlines()
#data = str(data).decode('latin-1')
bt = bs(str(data), convertEntities=bs.HTML_ENTITIES, fromEncoding='latin-1')
titles = bt.findAll('span', 'listingTitle')
phones = bt.findAll('a', 'phoneNumber')
entries = zip(titles, phones)
for title, phone in entries:
#print title.prettify(encoding='latin-1')
#data_file.write(title.text.decode('utf-8') + " " + phone.text.decode('utf-8') + "\n")
print title.text
data_file.close()
/ ************ /
И вывод этого: Projets Autochtones Du Qu \ xc3 \ xa9bec
Как вы можете видеть, e с акцентом, который должен идти в Квебеке, не 'т отображение.Я перепробовал все упомянутое на SO, вызывая unicode (), переходя от Encoding к супу, .decode ('latin-1'), но я ничего не получаю.
Есть идеи?