动机
新闻网页,结构大多是类似的。
所以,能不能用一种通用的爬取方法来提取其中的数据?
简介
Newspapaer
1受到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这种网站,是没有效果的.
个人评分
类型 | 评分 |
---|---|
实用性 | ⭐️⭐️ |
易用性 | ⭐️⭐️⭐️⭐️ |
有趣性 | ⭐️⭐️⭐️⭐️ |