如何抓取新闻内容并去除无关部分
我想用BeautifulSoup和for循环来抓取100篇新闻文本,并把这些文本存储到一个叫myarticle的列表里。我希望myarticle里面只包含新闻文章的内容,而我发现所有的新闻都有一个h属性。但是,我得到的结果却包含了很多无关的部分,比如:“感谢您联系我们。我们已经收到您的提交。”还有“这篇文章被分享了205,105次。”等等。
另一个问题是,当我print(myarticle[0])时,它给了我很多新闻文章,但我原本只希望它能给我一篇文章。
我想知道如何去掉那些无关的部分,只保留我们在新闻网站上看到的主要内容。还有,我该如何调整代码,让print(myarticle[0])只给我第一篇新闻文章。
其中一篇100篇新闻文章在这个页面上: https://nypost.com/2020/04/21/missouri-sues-china-over-coronavirus-deceit/
我想抓取的其他新闻文章在这个网站上: https://nypost.com/search/China+COVID-19/page/1/?orderby=relevance
以下是与我问题相关的代码行。
for pagelink in pagelinks:
#get page text
page = requests.get(pagelink)
#parse with BeautifulSoup
soup = bs(page.text, 'lxml')
articletext = soup.find_all('p')
for paragraph in articletext[:-1]:
#get the text only
text = paragraph.get_text()
paragraphtext.append(text)
#combine all paragraphs into an article
thearticle.append(paragraphtext)
# join paragraphs to re-create the article
myarticle = [''.join(article) for article in thearticle]
#show the first string of the list
print(myarticle[0])
相关问题:
- 暂无相关问题
1 个回答
1
soup.find_all('p')
这里你可以找到网页中所有的P标签元素。P标签是用来显示大部分文本的,非常常见,所以你会看到一些不是文章的文本。
我会先找到只包含文章的那个div,然后再获取文本,像这样:
container = soup.find("div", class_=['entry-content', 'entry-content-read-more'])
articletext = container.find_all('p')