一、框架介绍

Newspaper是一个python3库,但是Newspaper框架并不适用于实际工程类新闻信息爬取工作,框架不稳定,爬取过程中会有各种bug,例如获取不到url、新闻信息等,但对于想获取一些新闻语料的朋友不妨一试,简单方便易上手,且不需要掌握太多关于爬虫方面的专业知识。

这是 Newspaper 的github链接:

https://github.com/codelucas/newspaper

这是 Newspaper文档说明的链接:

https://newspaper.readthedocs.io/en/latest/

这是 Newspaper快速入门的链接:

https://newspaper.readthedocs.io/en/latest/user_guide/quickstart.html

安装方法:
pip3 install newspaper3k

二、功能

主要功能如下:

  • 多线程文章下载框架
  • 新闻网址识别
  • 从html中提取文本
  • 从html中提取顶部图像
  • 从html中提取所有图像
  • 从文本中提取关键字
  • 从文本中提取摘要
  • 从文本中提取作者
  • Google趋势术语提取。
  • 使用10种以上语言(英语,中文,德语,阿拉伯语……)

介绍:

1.建立新闻来源
import newspaper
web_paper = newspaper.build("http://www.sxdi.gov.cn/gzdt/jlsc/", language="zh", memoize_articles=False)
注:文章缓存:默认情况下,newspaper缓存所有以前提取的文章,并删除它已经提取的任何文章。此功能用于防止重复的文章和提高提取速度。可以使用memoize_articles参数选择退出此功能。
2.提取文章的url
for article in web_paper.articles:
print(article.url)
output:
http://www.sxdi.gov.cn/gzdt/jlsc/2019101220009.html
http://www.sxdi.gov.cn/gzdt/jlsc/2019101119998.html
http://www.sxdi.gov.cn/gzdt/jlsc/2019100919989.html
http://www.sxdi.gov.cn/gzdt/jlsc/2019100819980.html
http://www.sxdi.gov.cn/gzdt/jlsc/2019092919940.html
http://www.sxdi.gov.cn/gzdt/jlsc/2019092919933.html
.... 
3.提取源类别
for category in web_paper.category_urls():
print(category)
output:
http://www.sxdi.gov.cn/gzdt/jlsc/....
4.提取源提要
for feed_url in web_paper.feed_urls():
print(feed_url)
 

5.提取源品牌和描述

print(web_paper.brand)  # 品牌
print(web_paper.description) # 描述
print("一共获取%s篇文章" % web_paper.size()) # 文章的数目
6.下载文章
from  newspaper import Article
article = Article("http://www.sol.com.cn/", language='zh') # Chinese
article.download()
7.解析文章并提取想要的信息
article.parse()  #网页解析
print("title=",article.title) # 获取文章标题
print("author=", article.authors) # 获取文章作者
print("publish_date=", article.publish_date) # 获取文章日期
print("top_iamge=",article.top_image) # 获取文章顶部图片地址
print("movies=",article.movies) # 获取文章视频链接
print("text=",article.text,"\n") # 获取文章正文
article.nlp()
print('keywords=',article.keywords)#从文本中提取关键字
print("summary=",article.summary)# 获取文章摘要
print("images=",article.images)#从html中提取所有图像
print("imgs=",article.imgs)
print("html=",article.html)#获取html
简单例子:
import newspaper
from newspaper import Article def spider_newspaper_url(url):
"""
默认情况下,newspaper缓存所有以前提取的文章,并删除它已经提取的任何文章。
使用memoize_articles参数选择退出此功能。
"""
web_paper = newspaper.build(url, language="zh", memoize_articles=False)
print("提取新闻页面的url!!!")
for article in web_paper.articles:
# 获取新闻网页的url
print("新闻页面url:", article.url)
# 调用spider_newspaper_information函数获取新闻网页数据
spider_newspaper_information(article.url) print("一共获取%s篇文章" % web_paper.size()) # 文章的数目 # 获取文章的信息
def spider_newspaper_information(url):
# 建立链接和下载文章
article = Article(url, language='zh') # Chinese
article.download()
article.parse() # 获取文章的信息
print("title=", article.title) # 获取文章标题
print("author=", article.authors) # 获取文章作者
print("publish_date=", article.publish_date) # 获取文章日期
# print("top_iamge=", article.top_image) # 获取文章顶部图片地址
# print("movies=", article.movies) # 获取文章视频链接
print("text=", article.text, "\n") # 获取文章正文
print("summary=", article.summary) # 获取文章摘要 if __name__ == "__main__":
web_lists = ["http://www.sxdi.gov.cn/gzdt/jlsc/","http://www.people.com.cn/GB/59476/"]
for web_list in web_lists:
spider_newspaper_url(web_list)

最新文章

  1. web.xml添加编码过滤器
  2. 一次EF批量插入多表数据的性能优化经历
  3. MVC中的成员资格,授权,安全性
  4. 使用nginx为ArcGIS Server做反向代理
  5. ACM: 限时训练题解-Runtime Error-二分查找
  6. BLE-NRF51822教程17-DFU使用手机升级
  7. Creating Excel File in Oracle Forms
  8. dwr NoSuchBeanDefinitionException
  9. MySQL BINARY和BIT类型
  10. 【译】 AWK教程指南 附录B-Actions
  11. Docker系列(九)Kubernetes安装
  12. 3ds max 2016 新功能
  13. CSS3选择器~一看吓一跳,这么多不会
  14. (@WhiteTaken)设计模式学习——组合模式
  15. JIT(Just in time,即时编译,边运行边编译)、AOT(Ahead Of Time,运行前编译),是两种程序的编译方式
  16. windows 环境下通过运行快速启动程序
  17. 潭州课堂25班:Ph201805201 django 项目 第三课 码云注册,django项目 (课堂笔记)
  18. 线段树及Lazy-Tag
  19. webAPI文件上传时文件过大404错误的问题
  20. HDU-2087-KMP-水题

热门文章

  1. CodeForces 760 C. Pavel and barbecue(dfs+思维)
  2. Java静态代码块、代码块及构造函数执行顺序
  3. 数论 Day 12
  4. Go语言标准库之strconv
  5. spring boot发送其他邮件
  6. 详细的App推广前的准备工作
  7. Android嵌入式开发初学者的几个注意点
  8. centos C++ ccache llvm编译环境配置
  9. KeyValue对RDDs
  10. 制作mysql大数据表验证覆盖索引