好用的文章采集工具(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("

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线