网页新闻抓取(如何快速将不同新闻网站中的大量新闻文章导出到一个)

优采云 发布时间: 2022-04-03 11:25

  网页新闻抓取(如何快速将不同新闻网站中的大量新闻文章导出到一个)

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

  

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

  通过大量搜索,我找到了一个简单的解决我的问题的方法,Newspaper3k!

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

  

  如何使用 Newspaper3k 抓取新闻?

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

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

  $ pip install newspaper3k

  1、基础知识

  import newspaperfrom 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 newspaperfrom newspaper import Articlefrom newspaper import Sourceimport 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多线程技术解决方案:

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

  我喜欢边做边学,我建议任何看到这个文章的人都可以使用上面的代码,自己动手。从这里,您现在可以使用 Newspaper3k 来抓取网络 文章。

  防范措施:

  

  - 结尾 -

  希望以上内容对大家有所帮助,喜欢本文的同学记得转发+采集哦~

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线