Как добавить текст из одной статьи в одну строку?BeautifulSoup - PullRequest
0 голосов
/ 25 мая 2018

Я изучаю Python в течение месяца, поэтому у меня есть базовое понимание этого.Beautifulsoup еще новее для меня.Я пытаюсь загрузить весь соответствующий текст из 250 тысяч статей из набора данных о насилии в США.С помощью небольшого набора тестов мне удалось извлечь большую часть соответствующего контента.Моя проблема в том, что когда я пытаюсь сохранить этот текст в список, каждое значение "p" превращается в свою собственную строку.Поэтому я не могу отличить какие строки от каких статей.Я хотел бы формат, где текст из каждой статьи содержится в одной строке, и каждая новая строка является текстом из следующей статьи.

Вот мой код, насколько я его сделал:

dirty_text = []
for url in test_links:
    r = requests.get(url)
    soup = BeautifulSoup(r.content, 'lxml')
    for node in soup.find_all('p'):
            dirty_text.append((node.get_text()))

Я бы предоставил ссылки, но я думаю, что этот вопрос отвечает с любым произвольным набором URL.Любая и вся помощь приветствуется!Также, пожалуйста, поправьте меня, если я собираюсь использовать BeautifulSoup очень неправильно.Я только начал изучать это сегодня!

1 Ответ

0 голосов
/ 25 мая 2018

Расширяя мой комментарий, вы сможете достичь способности различать, какая ссылка произвела, какой текст, переписав что-то вроде этого:

dirty_text = {}
for url in test_links:
    r = requests.get(url)
    soup = BeautifulSoup(r.content, 'lxml')
    dirty_text[url] = '\n'.join([node.get_text() for node in soup.find_all('p')])

Пройдя дальше, если все заголовкипоскольку статьи отформатированы одинаково (скажем, они все в первом теге h1 на странице), вы можете сделать что-то вроде этого:

dirty_text = {}
for url in test_links:
    r = requests.get(url)
    soup = BeautifulSoup(r.content, 'lxml')
    article_title = soup.find('h1').text
    dirty_text[article_title] = '\n'.join([node.get_text() for node in soup.find_all('p')])
...