抓取网页新闻(如何利用Python多线程爬取新闻网站中的大量新闻文章?)

优采云 发布时间: 2021-10-07 07:06

  抓取网页新闻(如何利用Python多线程爬取新闻网站中的大量新闻文章?)

  前几天公司给我安排了一个新项目,要求爬取网上的新闻文章。为了用最简单、最快捷的方式完成这个任务,特意做了一些准备。

  

  我们都知道有一些Python插件可以帮助我们完成爬虫工作,其中之一就是BeautifulSoup。这是一个非常有用的插件,但是这个插件需要我们了解每个新闻平台独特的html结构。像我这种懒惰的人绝对不会这样做。每个 网站 都必须了解框架。,这是浪费时间。

  经过大量的搜索,我找到了一个简单的方法来解决这个问题,那就是Newspaper3k!

  在本教程中,我将向您展示如何将大量来自不同新闻的新闻网站 快速抓取到一个简单的 Python 脚本中。

  

  如何使用Newspaper3k抓取新闻?

  首先,我们需要将python插件安装到开发环境中。

  提示:我们最好再创建一个虚拟的python环境。

  $ pip install newspaper3k

  1、基础知识

  import newspaper

from newspaper import Article

#将文章下载到内存的基础

article = Article("url link to your article")

article.download()

article.parse()

article.nlp()

# 输出全文

print(article.text)

# 输出文本摘要

# 因为newspaper3k内置了NLP工具,这一步行之有效

print(article.summary)

# 输出作者名字

print(article.authors)

# 输出关键字列表

print(article.keywords)

#收集文章中其他有用元数据的其他函数

article.title # 给出标题

article.publish_date #给出文章发表的日期

article.top_image # 链接到文章的主要图像

article.images # 提供一组图像链接

  2、高级:从一个新闻下载多篇文章网站文章

  当我抓取一堆新闻文章时,我想从一个新闻网站文章抓取多篇文章,并将所有内容放入pandas数据框中,这样我就可以将数据导出到一个.csv 文件,借助这个插件,做起来非常简单。

  import newspaper

from newspaper import Article

from newspaper import Source

import pandas as pd

# 假设我们要从Gamespot(该网站讨论视频游戏)下载文章

gamespot = newspaper.build("https://www.gamespot.com//news/", memoize_articles = False)

#我将memoize_articles设置为False,因为我不希望它缓存文章并将其保存到内存中,然后再运行。

# 全新运行,每次运行时都基本上执行此脚本

final_df = pd.DataFrame()

for each_article in gamespot.articles:

each_article.download()

each_article.parse()

each_article.nlp()

temp_df = pd.DataFrame(columns = ['Title', 'Authors', 'Text',

'Summary', 'published_date', 'Source'])

temp_df['Authors'] = each_article.authors

temp_df['Title'] = each_article.title

temp_df['Text'] = each_article.text

temp_df['Summary'] = each_article.summary

temp_df['published_date'] = each_article.publish_date

temp_df['Source'] = each_article.source_url

final_df = final_df.append(temp_df, ignore_index = True)

#从这里可以将此Pandas数据框导出到csv文件

final_df.to_csv('my_scraped_articles.csv')

  完成它!轻松抓取大量 文章。

  使用上面的代码,你可以实现一个for循环来循环大量的报纸来源。创建一个巨大的最终数据框,您可以导出和使用它。

  3、多线程网络爬虫

  我上面提出的解决方案对于某些人来说可能会有点慢,因为它是一块一块地下载文章。如果您有很多新闻来源,则可能需要一些时间来抓取它们。还有一种方法可以加快这个过程:借助多线程技术,我们可以实现快速爬行。

  Python多线程技术解决方案:/intro-to-python-threading/

  注意:在下面的代码中,我为每个源实现了下载限制。运行此脚本时,您可能需要将其删除。实施此限制是为了允许用户在运行时测试他们的代码。

  我喜欢边做边学。建议任何看过这篇文章的人都可以使用上面的代码,自己动手做。从这里开始,您现在可以使用 Newspaper3k 在线抓取 文章。

  预防措施:

  

  - 结尾 -

  希望以上内容对大家有所帮助。喜欢这篇文章的记得转发+采集哦~

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线