ничего не печатается, потому что вы смотрите не в том месте на articleText = soup.findAll('div', attrs={'class':'story-text'})
Вы сохранили это как soupArticle
, а не soup
.
Также вы хотели, чтобы текстили элемент HTML?Как есть, вы получаете тег / элемент.Если вам нужен только текст, вам потребуется bodyText = div.find('b').text
Но главная проблема заключается в том, что вы хотите изменить:
articleText = soup.findAll('div', attrs={'class':'story-text'})
на
articleText = soupArticle.findAll('div', attrs={'class':'story-text'})
Чтобы получить полную статью, вам нужно будет просмотреть теги p
.И выяснить, как пропустить те части, которые вам не нужны.Есть лучший способ сделать это, но чтобы вы начали, что-то вроде этого:
for article in articleLinks:
link = article.find('a', attrs={'target':'_top'}).get('href')
articleURL = urlopen(link)
articleContent = articleURL.read()
soupArticle = BeautifulSoup(articleContent, "lxml")
articleText = soupArticle.findAll('div', attrs={'class':'story-text'})
for div in articleText:
bodyText = div.find_all('p')
for para in bodyText:
if 'By ' in para.text:
continue
print (para.text.strip())