网站首页 > 技术文章 正文
前几天,公司给我安排了一个新项目,要求在网上爬取新闻文章。为了用最简单、最快的方法来完成此任务,特意做了一些准备。
我们都知道,有一些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循环,以循环遍历大量 newspaper 源。创建一个庞大的最终数据框架,你可以将其导出然后使用。
3、多线程网页爬取
我上面提出的解决方案对于某些人来说可能有点慢,因为它是一篇接一篇地下载文章。如果你有许多新闻来源,可能会花一些时间才能爬取过来。这里还有一种方法可以加快这一过程:那就是在多线程技术的帮助下,我们可以做到快速爬取。
Python多线程技术解决方案:
https://realpython.com/intro-to-python-threading/
注意:在下面的代码中,我实现了每个源的下载限制。运行此脚本时可能需要将其删除。实现此限制是为了让用户在运行代码时测试出其代码。
我喜欢边做边学,建议看到这篇文章的人都可以使用上面的代码,自己动手操作。从这里,你现在可以使用 Newspaper3k 来网上抓取文章。
注意事项:
- 能否成功从每个新闻媒体网站抓取大量文章,会因媒体而异。
- Newspaper3k 的多线程功能有时可能会出错。取决于新闻媒体,使用.build函数在每个新闻媒体上的抓取文章最为可靠。
- 记得善用爬虫技术,不要做违法的事,该文章仅限于指导大家爬取新闻类型的文章。
--END--
希望以上内容,能给大家带来帮助,喜欢本文的同学记得转发+收藏哦~
关注我们的公众号:为AI呐喊(weainahan)可以学到更多知识!
猜你喜欢
- 2025-05-08 使用Python爬取给定网页的所有链接(附完整代码)
- 2025-05-08 python爬取电子课本,送给居家上课的孩子们
- 2025-05-08 Python爬虫实战,selenium模拟登录,Python实现抓取某东商品数据
- 2025-05-08 「2022 年」崔庆才 Python3 爬虫教程 - aiohttp 的基本使用
- 2025-05-08 Python爬虫实战:爬取动态网页数据
- 2025-05-08 python爬虫怎么副业接单(python爬虫在哪接单)
- 2025-05-08 「2022 年」崔庆才 Python3 爬虫教程 - 网页解析利器 XPath 初体验
- 2025-05-08 惊呆了!Python还能这样用?爬取网页数据并存储至本地数据库
- 2025-05-08 Python爬虫:如何实现异步加载爬取图片?
- 2025-05-08 使用ChatGPT编码抓取网页数据成功
- 263℃Python短文,Python中的嵌套条件语句(六)
- 262℃python笔记:for循环嵌套。end=""的作用,图形打印
- 261℃PythonNet:实现Python与.Net代码相互调用!
- 255℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 255℃Python实现字符串小写转大写并写入文件
- 113℃原来2025是完美的平方年,一起探索六种平方的算吧
- 94℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 87℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)