免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Day 16: Goose Extractor —— 好用的文章提取工具
目錄結構

編者注:我們發(fā)現(xiàn)了有趣的系列文章《30天學習30種新技術》,正在翻譯,一天一篇更新,年終禮包。下面是第 16 天的內容。


今天的“30天學習30種新技術”的主題是如何使用Python進行文章提取。這幾個月來,我對文章提取很感興趣,因為我想寫一個Prismatic克隆。Prismatic創(chuàng)建基于用戶興趣的新聞源。提取文章的主要內容、圖片和其他元信息對大多數(shù)類似Prismatic的內容發(fā)現(xiàn)站點很有用。本文中,我們將學習如何使用Python的goose-extractor包來完成這個任務。我們首先介紹一些基礎知識,然后使用Goose Extractor 的 API 來開發(fā)一個簡單的Flask應用。

Goose Extractor是什么?

Goose Extractor是一個Python的開源文章提取庫??梢杂盟崛∥恼碌奈谋緝热?、圖片、視頻、元信息和標簽。Goose本來是由Gravity.com編寫的Java庫,最近轉向了scala。

Goose Extractor網(wǎng)站是這么介紹的:

Goose Extractor完全用Python重寫了。目標是給定任意資訊文章或者任意文章類的網(wǎng)頁,不僅提取出文章的主體,同時提取出所有元信息以及圖片等信息。

為什么關心Goose Extractor

我決定學習Goose Extractor是因為:

  1. 我打算開發(fā)需要文章提取功能的應用。Goose Extractor基于NLTKBeautiful Soup,分別是文本處理和HTML解析的領導者。

  2. 我想了解如何用Python進行文章提取。

安裝Goose Extractor

我們首先需要安裝Python和virtualenv,本文使用的Python版本是2.7

然后使用如下命令安裝:

mkdir myappcd myappvirtualenv venv --python=python2.7. venv/bin/activatepip install goose-extractor

GitHub倉庫

今天的示例程序的代碼可從GitHub取得。

應用

示例應用運行在 OpenShift 上 http://gooseextractor-t20.rhcloud.com/ 用戶可以提交鏈接,應用會顯示標題,主要圖片和正文的前200個字符。

我們將開發(fā)一個簡單的REST API Flask應用。如果你不了解Flask,你可以看這篇我以前寫的文章

安裝Flask:

. venv/bin/activatepip install flask

myapp目錄下創(chuàng)建app.py,內容如下:

from flask import Flask, request, render_template,jsonifyfrom goose import Gooseapp = 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)

解釋下上面的代碼:

  1. flask包導入了Flask類、request對象、jsonify函數(shù)和render_template函數(shù)。

  2. goose包導入Goose類。

  3. 定義了/index的路由。若用戶向//index發(fā)送GET請求,會渲染index.html頁面。

  4. 定義了/api/v1/extract路由。我們從請求對象中獲取url,然后創(chuàng)建了一個Goose類的實例。接著提取文章。最后創(chuàng)建一個json對象并返回該對象。json對象中包括標題、文本和主要圖片。

  5. 最后我們使用python app.py命令來啟動開發(fā)服務器,以運行應用。我們把上面的代碼復制到app.py文件中。我們同時通過Debug=True開啟了調試,這樣當意料之外的情況出現(xiàn)時,瀏覽器就可以提供一個交互式的調試器。開啟調試的另一個好處是,改動文件 之后,服務會自動重新加載。我們可以讓調試器在后臺運行,然后繼續(xù)在我們的應用上工作。這提供了高效的開發(fā)環(huán)境。

我們將在index.html中使用Twitter Bootstrap來添加樣式。我們同時使用了jQuery,以便實現(xiàn)keyup事件觸發(fā)REST調用。退格、制表符、回車、上、下、左、右不會觸發(fā)REST調用。

<!DOCTYPE html><html><head>    <title>Extract Title, Text, and Image from URL</title>    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <link rel="stylesheet" type="text/css" href="static/css/bootstrap.css">    <style type="text/css">    body {      padding-top:60px;      padding-bottom: 60px;    }  </style></head><body><div class="navbar navbar-inverse navbar-fixed-top">      <div class="container">        <div class="navbar-header">          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">            <span class="icon-bar"></span>            <span class="icon-bar"></span>            <span class="icon-bar"></span>          </button>          <a class="navbar-brand" href="#">TextExtraction</a>        </div>    </div>  </div><div id="main" class="container">    <form class="form-horizontal" role="form" id="myform">        <div class="form-group">            <div class="col-lg-4">                <input type="url" id="url" name="url"  class="form-control" placeholder="Url you want to parse" required>            </div>        </div>        <div class="form-group">            <input type="submit" value="Extract" id="submitUrl" class="btn btn-success">        </div>    </form></div><div id="loading" style="display:none;" class="container">    <img src="/static/images/loader.gif" alt="Please wait.." /></div><div id="result" class="container"></div><script type="text/javascript" src="static/js/jquery.js"></script><script type="text/javascript">    $("#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("<h4>"+result.title+"</h4>");            $("#result").append("<img src='"+result.image+"' height='300' width='300'</img>");            $("#result").append("<p class='lead'>"+result.text+"</p>");    })    });</script></body></html>

你可以從github 倉庫中復制js和css文件。

上面的HTML文件中,表單提交觸發(fā)REST調用。當我們接受到回應后,將它附加到resultdiv中。

部署到云端

在我們部署應用到OpenShift之前,我們需要先設置一下:

  1. 注冊一個OpenShift賬號。注冊是完全免費的,Red Hat給每個用戶三枚免費的Gear,可以用Gear運行你的應用。在寫作此文的時候,每個用戶能免費使用總共 1.5 GB 內存和 3 GB 硬盤空間。

  2. 安裝 rhc客戶端工具。rhc是ruby gem,因此你的機子上需要裝有 ruby 1.8.7以上版本。 只需輸入 sudo gem install rhc即可安裝 rhc 。如果你已經安裝過了,確保是最新版。運行sudo gem update rhc即可升級。關于配置rhc命令行工具的詳細信息,請參考: https://openshift.redhat.com/community/developers/rhc-client-tools-install

  3. 使用 rhc 的 setup 命令配置你的 OpenShift 賬號。這個命令會幫助你創(chuàng)建一個命名空間,同時將你的ssh公鑰上傳至 OpenShift 服務器。

設置之后,我們可以通過如下命令創(chuàng)建一個新的OpenShift應用。

rhc create-app day16demo python-2.7 --from-code https://github.com/shekhargulati/day16-goose-extractor-demo.git --timeout 180

這會為我們創(chuàng)建一個名為gear的應用容器,并自動配置相應的SELinux政策和cgroup設置。OpenShift同時會為我們創(chuàng)建一個私有的git倉庫,并將其克隆到本地。最后,OpenShift會自動配置DNS。應用可以在如下地址訪問 http://gooseextractor-t20.rhcloud.com/

好了,這就是今天的內容。請不斷反饋。


原文 Day 16: Goose Extractor--An Article Extractor That Just Works
翻譯 SegmentFault

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
從頭搭建一個flask鑒權系統(tǒng)之登陸
只需一招,Python 將系統(tǒng)秒變在線版!
淺析Yii2的view層設計
BBS 登錄
怎樣在zblog博客文章內容頁里實現(xiàn)左右箭頭翻頁功能
Openshift常用命令
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服