您当前的位置:首页 > 计算机 > 编程开发 > Python

python爬虫:正文提取第三方库goose

时间:08-24来源:作者:点击数:

Goose 是一个 文章内容提取器 ,可以从任意资讯文章类的网页中提取 文章主体 ,并提取 标题、标签、摘要、图片、视频 等信息,且 支持中文 网页。它最初是由 http://Gravity.com 用 Java 编写的。python-goose 是用 Python 重写的版本。

有了这个库,你从网上爬下来的网页可以直接获取正文内容,无需再用 bs4 或正则表达式一个个去处理文本。

正文提取库goose,效果不是太好,要求不高的话可以试试用

python2 github:https://github.com/grangier/python-goose

python3 github:https://github.com/goose3/goose3

pypi:https://pypi.org/project/goose3/3.0.6/

安装
  • py2

网上大多数教程提到的 python-goose 项目目前只支持到 python 2.7。可以通过 pip 安装:

pip install goose-extractor

或者安装官网上的方法从源代码安装:

git clone https://github.com/grangier/python-goose.git
cd python-goose
pip install -r requirements.txt
python setup.py install
  • py3
pip install goose3

经过我一些简单的测试,未发现两个版本在结果上有太大的差异。

# -*- coding: utf-8 -*-
from goose import Goose
from goose.text import StopWordsChinese


# 初始化,设置中文分词
g = Goose({'stopwords_class': StopWordsChinese})
url = "http://www.xinhuanet.com/"
#提取,可以传入 url 或者 html 文本:
article = g.extract(url=url)
#article = g.extract(raw_html=html)
print(article.title)# 标题
print(article.cleaned_text)# 显示正文

除了标题 title 和正文 cleaned_text 外,还可以获取一些额外的信息,比如:

meta_description :摘要

meta_keywords :关键词

tags :标签

top_image :主要图片

infos :包含所有信息的 dict

raw_html :原始 HTML 文本

如有有些网站限制了程序抓取,也可以根据需要添加 user-agent 信息:

g = Goose({'browser_user_agent': 'Version/5.1.2 Safari/534.52.7'})

如果是 goose3,因为使用了 requests 库作为请求模块,因此还可以以相似方式配置 headers、proxies 等属性。

在上述示例中使用到的 StopWordsChinese 为中文分词器,可一定程度上提高中文文章的识别准确率,但更耗时。

其他说明

1、Goose 虽然方便,但并不能保证每个网站都能精确获取,因此 适合大规模文章的采集 ,如热点追踪、舆情分析等。它只能从概率上保证大多数网站可以相对准确地抓取。我经过一些尝试后发现,抓取英文网站优于中文网站,主流网站优于小众网站,文本的提取优于图片的提取。

2、从项目中的 requirements.txt 文件可以看出,goose 中使用到了 Pillow、lxml、cssselect、jieba、beautifulsoup、nltk ,goose3 还用到了 requests ,我们之前很多文章和项目中都有所涉及:

3、如果你是使用基于 python2 的 goose,有可能会遇到 编码 上的问题(尤其是 windows 上)。这方面可以在公众号对话里回复关键词 编码 ,我们有过相关的讲解。

4、除了 goose 外,还有其他的正文提取库可以尝试,比如 python-boilerpipe、python-readability 等。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐