ребята! Недавно я начал исследовать сайты разбора в python, и через неделю я захотел разобрать Википедию. Я сделал это (это то, что у меня сейчас есть на примере вики-страницы о Пифагоре в двух словах):
{'start_info': 'Пифагор Самосский (др.-греч. Πυθαγόρας ὁ Σάμιος, лат. . \ xa0Пифагор, «пифийский вещатель» [2]; 570—490 гг. до \ xa0н. \ xa0э.) \ xa0— древнегреческий философ, математик и мистик, создатель религиозно-философской школы пифагорейцев. \ n '}
{'Биография': 'Историю жизни Пифагора ... Заключительный отрывок из «Золотых стихов» в переводе И. Петер: \ n '}
{' См. также ':' '}
{' Примечания ':' '}
{' Литература ':' '}
{'Источники и ссылки': ''} И, как вы видите, у меня есть одна проблема: есть некоторые нежелательные для меня элементы, такие как \ xa0 или [1], [2] и др. c. Я пытался заменить его, используя метод replace, но, возможно, .replays не работает со словарями, или, может быть, я такой тупой:
def treatment(data, errors):
for data_ind in range(len(data)):
for key, value in data[data_ind].items():
if r'\xa0' in value:
data[data_ind][key].replace(r'\xa0', '')
return data
Я тоже попытался найти решение этой проблемы на inte rnet, но я даже не могу назвать это. Если вы знаете, как я могу решить эту проблему, пожалуйста, помогите, я не могу записать свои данные в файл из-за этого и Я действительно устал! Спасибо! Вот мой код (я использовал bf4 и запросы):
import requests as req
import sys, codecs
users_topic = input("Введите тему: ")
URL = f"https://ru.wikipedia.org/wiki/{users_topic}"
HEADERS = {'User-agent': 'your bot 0.1'}
def get_html(url, params=None):
request = req.get(url, headers=HEADERS, params=params)
return request
def get_content(html):
content_tree = bs(html, 'html.parser')
info_from_wiki = [{'start_info': ''}]
items = content_tree.find('div', class_='mw-parser-output')
current_header_of_data = ''
paragraph = 0
# Main data finding
for item in items:
if item.name == 'h2':
paragraph += 1
current_header_of_data = item.get_text()
info_from_wiki.append({
f'{current_header_of_data}': ''
})
elif item.name == 'p':
if len(info_from_wiki) == 1:
text_data = item.get_text()
info_from_wiki[paragraph]['start_info'] += text_data
else:
text_data = item.get_text()
info_from_wiki[paragraph][current_header_of_data] += text_data
for data in info_from_wiki:
print(data)
return info_from_wiki
def pars(url):
html = get_html(url)
if html.status_code == 200:
return get_content(html.text)
else:
print('Smth goes wrong')
def treatment(data, errors):
for data_ind in range(len(data)):
for key, value in data[data_ind].items():
if r'\xa0' in value:
data[data_ind][key].replace(r'\xa0', '')
return data