V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
cai72738
V2EX  ›  Python

自动提取网页内容

  •  
  •   cai72738 · 2016-08-19 09:19:51 +08:00 · 7422 次点击
    这是一个创建于 2779 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,给个网页能不能实现自动提取,文章标题,文章正文,发布时间,来源等这些需要的内容。目前,我就是写正则来匹配和 XPath 来提取。可是很恶心。有没有什么好办法呢?各位大腿们


    蟹蟹,目前有 X 千个源。后续可能还会有新的

    第 1 条附言  ·  2016-08-19 15:01:48 +08:00
    我现在找到了 boilerpipe 这个正文提取的很不错,就是如果想提取新闻发布时间和新闻来源的,也是尴尬(我看文档看的迷迷糊糊的)。

    --------------------
    重要的是,同一站点下新闻链接的抓取也是头疼。不标准的站太多,同一个栏目下,文章的链接不规则,自己配正则还好,自动的话。(抓狂)

    -----------------------
    OS:我只是实习生啊~~~~~~
    24 条回复    2016-08-20 12:12:38 +08:00
    tumb8r
        1
    tumb8r  
       2016-08-19 09:30:50 +08:00
    title 好说,但是想正文、发布时间、来源等,每个源的标签是一样的吗?如果是一样的很好爬,如果不一样就需要针对每个源写规则,麻烦。
    dsg001
        2
    dsg001  
       2016-08-19 09:34:04 +08:00
    https://github.com/vinta/awesome-python
    有自动提取正文的库,但只能针对标准网页,如果太过杂乱也没辙
    naomhan
        3
    naomhan  
       2016-08-19 09:35:10 +08:00
    正文还好说 标题 时间提取真的不容易 暂时没人研究 我们暂时是通过百度搜索相关新闻 因为百度搜索都结构化处理了 时间 标题获取就很容易
    laoyur
        4
    laoyur  
       2016-08-19 09:35:32 +08:00
    用 readability
    ququzone
        5
    ququzone  
       2016-08-19 09:42:46 +08:00   ❤️ 2
    看看我写的这个把 https://github.com/ququzone/smart-extractor
    基于 Readability ,支持 Docker 的微服务
    MarcoQin
        6
    MarcoQin  
       2016-08-19 10:12:13 +08:00
    python-goose 应该可以应付大多数标准的信息源。再配合部分 xpath 应该可以的
    polythene
        7
    polythene  
       2016-08-19 10:45:34 +08:00   ❤️ 1
    我之前做了一个应用,用来提取 hackernews 上新闻的正文,这是我用来提取的库 https://github.com/polyrabbit/hacker-news-digest/tree/master/page_content_extractor ,至少 hackernews 上 X 千的新闻源提取效果蛮好的。
    cai72738
        8
    cai72738  
    OP
       2016-08-19 11:03:27 +08:00
    @polythene 除了大段正文的提取,那新闻来源和发布时间,也是需要精确匹配出来的。还有最难搞的新闻 URL
    @tumb8r 还就真的不一样,而且我现在也就在对每个源写规则,恼死了。
    cai72738
        9
    cai72738  
    OP
       2016-08-19 11:03:52 +08:00
    @MarcoQin 标准信息源很少,大部分都是不标准的
    xhsmile
        10
    xhsmile  
       2016-08-19 11:24:21 +08:00
    Python+ requests
    接着写脚本
    import requests
    html = requests.get(url).text
    print(html)
    然后 re 解析?
    cai72738
        11
    cai72738  
    OP
       2016-08-19 11:28:03 +08:00
    @xhsmile 上千的源,不大可能一个一个写正则。所以就想有没有能自动生成网页对应的正则的库
    whahuzhihao
        12
    whahuzhihao  
       2016-08-19 12:10:18 +08:00
    想起来 v 站以前见到过一个大神写的 貌似挺好
    /t/270075
    reyoung1110
        13
    reyoung1110  
       2016-08-19 12:14:43 +08:00
    groose
    reyoung1110
        14
    reyoung1110  
       2016-08-19 12:15:18 +08:00
    ambw
        15
    ambw  
       2016-08-19 12:34:12 +08:00
    boilerpipe 也不错,是我觉得最好用的
    cai72738
        16
    cai72738  
    OP
       2016-08-19 13:58:04 +08:00
    @ambw 那个只有标题和正文,我看源码,看能不能提取出其他信息
    icybee
        17
    icybee  
       2016-08-19 13:59:46 +08:00   ❤️ 1
    1. python-readability
    https://github.com/buriy/python-readability

    2. newspaper3k
    https://github.com/codelucas/newspaper

    3. readabilityBUNDLE
    https://github.com/srijiths/readabilityBUNDLE

    4. Dragnet
    https://github.com/seomoz/dragnet

    5. Diffbot
    http://www.diffbot.com/products/automatic/article/

    各种工具都借鉴了比较多的算法,其中原始的 readability ( 1 )是被一个叫 Pocket 的 app 商业化使用的,应该还可以;第 3 个 BUNDLE 是综合了三种基于 readability 的算法;第 5 个是基于 CV 的算法
    tianshiyeben
        18
    tianshiyeben  
       2016-08-19 14:37:17 +08:00
    想自动提取的话,比较难,我前段时间写过提取新闻网站的正文。
    实现自动提取标题,正文,发布时间
    但是正文提取有误差,准确率大概 98%吧

    可以参考下

    https://github.com/tianshiyeben/draw
    cai72738
        19
    cai72738  
    OP
       2016-08-19 14:52:02 +08:00
    @tianshiyeben 大概看了你写的,标题,您好像直接取得 mata 里的 title ,在我这儿行不通。谢谢分享!
    wowo2088
        20
    wowo2088  
       2016-08-19 14:57:21 +08:00
    非标准网页很多,没有特别通用的方法,还是正则吧
    Xname
        21
    Xname  
       2016-08-20 03:13:41 +08:00
    这种情况当然是火车头了 C#来的 功能强大
    guoruei
        22
    guoruei  
       2016-08-20 03:59:49 +08:00
    换个思路吧。你把一个站抓下来。

    每页内容一样的是什么?是广告样式和导航。这个是有规律的。
    不一样的是什么?是正文。它长短不一,还图文混排。

    你只需把有规律的内容去掉就剩下正文了。

    这。。。
    FallenMax
        23
    FallenMax  
       2016-08-20 10:54:05 +08:00 via Android
    我写了一个叫 smart toc 的 chrome 扩展(有同名 github ),用于抽取网页内容和标题等级。中间包含一个简单的内容抽取算法。可以试试效果如何~

    (不过弊端是:这算法需要在浏览器上运行,因为依赖计算出的内容样式)
    madxzb
        24
    madxzb  
       2016-08-20 12:12:38 +08:00
    可参考我以前写的,网页正文提取算法研究[非正则]
    http://xuzhibin.com/2010/11/11/text-extraction/
    我当时用 c #写的,参考思路即可。发布时间,列表页的内容链接块其实都可以按这个思路获取到。当然也不是 100%的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2820 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 14:58 · PVG 22:58 · LAX 07:58 · JFK 10:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.