Как правильно извлечь специальные символы из веб-страницы с помощью Beautifulsoup? - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь извлечь весь текст с веб-страницы, используя ее URL, с помощью Beautifulsoup. Я попытался запустить код, который нашел здесь: https://www.researchgate.net/post/how_to_scrape_text_from_webpage_using_beautifulsoup_python

Все отлично работает, кроме специальных символов, таких как «é» или «à». Я перепробовал кучу модификаций, но не смог заставить его работать. Вот мой код:

from bs4 import BeautifulSoup
import requests
import re
import codecs

html = requests.get(yourWebsiteURL).content

unicode_str = html.decode('utf8')
encoded_str = unicode_str.encode("ascii",'ignore')
news_soup = BeautifulSoup(encoded_str, "html.parser")
a_text = news_soup.find_all('p')

y=[re.sub(r'<.+?>',r'',str(a)) for a in a_text]

file = codecs.open("textOutput.txt", "wb", encoding='utf-8')
file.write(str(y))
file.close()

Однако я уверен, что проблема связана с моим использованием bs4, поскольку я никогда не сталкивался с этой проблемой при записи в файл.

1 Ответ

0 голосов
/ 30 апреля 2018
encoded_str = unicode_str.encode("ascii",'ignore')

Эта строка вашего кода кодирует ваш текст как ascii. Ascii не содержит специальных символов, таких как é или à. Я не уверен, почему вы декодируете из UTF8, который включает в себя эти символы, в ascii, который не содержит их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...