好用的文章采集工具(30天学习30种新技术:如何使用Python进行文章提取)
优采云 发布时间: 2021-10-28 02:01好用的文章采集工具(30天学习30种新技术:如何使用Python进行文章提取)
编者按:我们发现了一个有趣的系列文章《30天学习30个新技术》,正在翻译中,每天更新一个,还有年终大礼包。以下是第16天的内容。
今天“30天学习30项新技术”的主题是如何使用Python进行文章抽取。最近几个月,我对文章提取很感兴趣,因为我想写一个Prismatic clone。Prismatic 根据用户兴趣创建新闻提要。提取文章 的主要内容、图片和其他元信息对于像 Prismatic 这样的大多数内容发现网站都很有用。在本文中,我们将学习如何使用 Python 的 goose-extractor 包来完成此任务。我们先介绍一些基础知识,然后使用 Goose Extractor 的 API 来开发一个简单的 Flask 应用。
什么是鹅提取器?
Goose Extractor 是一个用于 Python 的开源 文章 提取库。您可以使用它来提取文章的文本内容、图片、视频、元信息和标签。Goose 最初是由一个 Java 库编写的,但最近切换到了 Scala。
Goose Extractor网站 是这样介绍的:
Goose Extractor 完全用 Python 重写。目标是给任何信息文章或任何文章网页,不仅提取文章的主体,还提取所有元信息、图片等信息。
为什么您关心 Goose Extractor
我决定学习 Goose Extractor 是因为:
我计划开发需要 文章 提取功能的应用程序。Goose Extractor 基于 NLTK 和 Beautiful Soup,分别在文本处理和 HTML 解析方面处于领先地位。
我想知道如何使用Python提取文章。
安装鹅提取器
我们首先需要安装 Python 和 virtualenv。本文使用的Python版本为2.7。
然后使用以下命令进行安装:
mkdir myapp
cd myapp
virtualenv venv --python=python2.7
. venv/bin/activate
pip install goose-extractor
GitHub 存储库
今天的示例程序的代码可以在 GitHub 上找到。
应用
示例应用程序在 OpenShift 上运行。用户可以提交一个链接,应用程序将显示标题、主图像和文本的前 200 个字符。
我们将开发一个简单的 REST API Flask 应用程序。如果你不了解 Flask,你可以阅读我之前写的这篇文章。
安装烧瓶:
. venv/bin/activate
pip install flask
在myapp目录下创建app.py,内容如下:
from flask import Flask, request, render_template,jsonify
from goose import Goose
app = Flask(__name__)
@app.route('/')
@app.route('/index')
def index():
return render_template('index.html')
@app.route('/api/v1/extract')
def extract():
url = request.args.get('url')
g = Goose()
article = g.extract(url=url)
response = {'title' : article.title , 'text' : article.cleaned_text[:250],'image': article.top_image.src}
return jsonify(response)
if __name__ == "__main__":
app.run(debug=True)
解释一下上面的代码:
从 Flask 包中导入 Flask 类、请求对象、jsonify 函数和 render_template 函数。
从 goose 包中导入 Goose 类。
定义 / 和 index 的路由。如果用户向 / 或 /index 发送 GET 请求,将呈现 index.html 页面。
定义了 /api/v1/extract 路由。我们从请求对象中获取 url,然后创建 Goose 类的实例。然后提取文章。最后,创建一个json对象并返回它。json 对象包括标题、正文和主图。
最后,我们使用 python app.py 命令启动开发服务器来运行应用程序。我们将上面的代码复制到 app.py 文件中。我们还通过 Debug=True 启用调试,以便在发生意外情况时,浏览器可以提供交互式调试器。开启调试的另一个好处是服务会在文件更改后自动重新加载。我们可以让调试器在后台运行并继续处理我们的应用程序。这提供了一个高效的开发环境。
我们将在 index.html 中使用 Twitter Bootstrap 添加样式。我们还使用 jQuery 启用 keyup 事件来触发 REST 调用。退格、制表符、回车、上、下、左、右不会触发 REST 调用。
<p>
Extract Title, Text, and Image from URL
body {
padding-top:60px;
padding-bottom: 60px;
}
TextExtraction
/static/images/loader.gif
$("#myform").on("submit", function(event){
$("#result").empty();
event.preventDefault();
$('#loading').show();
var url = $("#url").val()
$.get('/api/v1/extract?url='+url,function(result){
$('#loading').hide();
$("#result").append(""+result.title+"");
$("#result").append("