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

Я пытаюсь получить songtexts с веб-страницы.Ниже у меня есть две версии того, как я хочу достичь этого, потому что с первой я мог получить текст только из первого абзаца <p>, но иногда в пределах сборника песен класса div есть несколько <p>.Со второй версией я достиг этого, но он включает в себя весь HTML.«.Text» работает, только если есть только один элемент, а не несколько (список).

Я немного растерялся, а также новичок в Python и BeautifulSoup, поэтому я очень ценю вашу помощь.

#Extract the songtext only and save it in file
 url = urllib.request.urlopen('https://www.udo- 
 lindenberg.de/mit_dir_sogar_n_kind.57754.htm')
 content = url.read()
 soup = BeautifulSoup(content, 'lxml')

 #search on page for div class block songbook and extract songtext between <p>
 table = soup.find_all('div', attrs={"class":"block songbook"})
 for item in table:
     sys.stdout = open('output.txt','wt')
     songtext = item.find('p').text
     print(item.find('p').text)

#extracts the songtext with html markers
page_link = 'https://www.udo-lindenberg.de/mit_dir_sogar_n_kind.57754.htm'
page_response = requests.get(page_link, timeout=5)
page_content = BeautifulSoup(page_response.content, "html.parser")
textContent = []
for i in range(0,200):
    paragraphs = soup.find_all('div', attrs={"class":"block songbook"})
    textContent.append(paragraphs)
    sys.stdout = open('output2.txt','wt')
    print(paragraphs)

1 Ответ

0 голосов
/ 30 ноября 2018

Хорошо, я решил это сам.Я нашел ошибку.Строка во второй версии:

paragraphs = soup.find_all('div', attrs={"class":"block songbook"})

должна быть изменена на:

paragraphs = soup.find('div', attrs={"class":"block songbook"}).text
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...