动机

新闻网页,结构大多是类似的。

所以,能不能用一种通用的爬取方法来提取其中的数据?

简介

Newspapaer1受到requests那种简单性API的启发,通过lxml来提升提取数据的速度。

用法

>>> from newspaper import Article

>>> url = 'http://fox13now.com/2013/12/30/new-year-new-laws-obamacare-pot-guns-and-drones/'
>>> article = Article(url)
>>> article.download() >>> article.html
'<!DOCTYPE HTML><html itemscope itemtype="http://...' >>> article.parse() >>> article.authors
['Leigh Ann Caldwell', 'John Honway'] >>> article.publish_date
datetime.datetime(2013, 12, 30, 0, 0) >>> article.text
'Washington (CNN) -- Not everyone subscribes to a New Year's resolution...' >>> article.top_image
'http://someCDN.com/blah/blah/blah/file.png' >>> article.movies
['http://youtube.com/path/to/link.com', ...]

源码分析

通用型爬虫一直是一个难以解决的问题。这个库看起来简单,其实源码结构非常复杂,还有nlp的支持。

不过,它其实也不是那么万能:

  • 首先这些提取规则只对英文类网站有效。extractors.py文件中,get_authors()方法首先会看页面有没有By (?P<author>...)字样,这显然只适合英文语法。
  • 网站本身的HTML语义必须有效,否则很多提取都会失败。extractors.py提取很多数据,都是通过HTML元素的attr或者elem name本身来判断的,那些陈旧的网站或者React SPA这种网站,是没有效果的.

个人评分

类型 评分
实用性 ⭐️⭐️
易用性 ⭐️⭐️⭐️⭐️
有趣性 ⭐️⭐️⭐️⭐️

最新文章

  1. 20145337《Java程序设计》第八周学习总结
  2. 转:浅谈关于b、h标签的优化技巧
  3. thymeleaf中的Literals
  4. PHP buffer的机制
  5. 阿里云ecs初始化磁盘后远程连接不到服务器
  6. Java 本地开发环境搭建(框架采用 Spring+Spring MVC+Hibernate+Jsp+Gradle+tomcat+mysql5.6)
  7. spring使用之旅(一) ---- bean的装配
  8. 终于将 SQL Server 成功迁移至 MySQL8.0 啦!!!
  9. 一、Xadmin------安装
  10. E - Just a Hook HDU - 1698 线段树区间修改区间和模版题
  11. python3 元组tuple
  12. vue router.push(),router.replace(),router.go()和router.replace后需要返回两次的问题
  13. python sphinx 文档自动生成方法
  14. tp5 中使用自定义扩展类和函数
  15. SQL语句:查看排名前五的SQL语句耗时情况
  16. Windows XPSP3通过网络级身份验证方式连接Windows Server 2008远程桌面
  17. 【 js 片段 】移动端适配简易步骤
  18. Daily Srum 10.22
  19. css margin塌陷问题
  20. 画弧线DrawArc的研究-我自己 -- 直线交接圆角

热门文章

  1. veeValidate实战
  2. 报表开发神器!DevExpress Reporting v19.1:WinForms平台新功能
  3. PassengerNginxdebian快速部署Rails
  4. WTL自定义控件:edit内容改变响应
  5. jenkins 中MultiJob Phase的使用,简单的pipeline可以用这个写
  6. CSS3选择器:nth-child和:nth-of-type的差异
  7. #7 div2 B Layer Cake 造蛋糕 智商题+1
  8. poj 3190 贪心+优先队列优化
  9. 关于int main(int argc,char* argv[])详解
  10. Codeforces 437D The Child and Zoo(并查集)