zoukankan      html  css  js  c++  java
  • 【AMAD】newspaper -- 爬取/提取新闻网页中的文本,元数据

    动机

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

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

    简介

    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这种网站,是没有效果的.

    个人评分

    类型评分
    实用性 ⭐️⭐️
    易用性 ⭐️⭐️⭐️⭐️
    有趣性 ⭐️⭐️⭐️⭐️
  • 相关阅读:
    python命令行工具模块-click
    python项目代码打包成Docker镜像
    背包九讲
    秒杀项目的3个奇数问题:并发队列的选择,请求接口的合理设计,高并发下的数据安全
    java类加载过程
    索引失效
    java面试
    进程间通信
    HashMap在Jdk1.7和1.8中的实现
    十大排序算法
  • 原文地址:https://www.cnblogs.com/thomaszdxsn/p/amadnewspaper--pa-quti-qu-xin-wen-wang-ye-zhong-de.html
Copyright © 2011-2022 走看看