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
Wh0amis
V2EX  ›  Python

爬取上千个不同类型的网站中的文章,大佬们有没有啥解决思路?

  •  
  •   Wh0amis · 2019-08-09 14:39:22 +08:00 · 5684 次点击
    这是一个创建于 1925 天前的主题,其中的信息可能已经有所发展或是发生改变。
    目前需求是这样的:有 3000 多个不同类型的咨询网站。这些网站包含有个人博客,新闻网站,还有一些微信公众号。要从这 3000 多个网站里面爬取更新的文章标题及 URL 还有发布时间。现在有点懵。写爬虫的话难道要一个站一个规则么。有没有统一爬取的解决方案呢?
    36 条回复    2019-11-20 11:14:06 +08:00
    smallpython
        1
    smallpython  
       2019-08-09 15:03:53 +08:00
    文章标题及 URL 还有发布时间, 这三个信息有什么用吗?
    先把所有网页都保存下来,提取的事情慢慢弄
    结果不要求百分百准确的话可以层层过滤
    yuhao2019
        2
    yuhao2019  
       2019-08-09 15:04:04 +08:00
    同问,
    foxyier
        3
    foxyier  
       2019-08-09 15:56:11 +08:00
    需要人工去查看这些网站的相同点, 根据相同点编写通用性更强的匹配规则。 如果能完全统一爬取的话, 爬虫工程师早就都失业了
    snappyone
        4
    snappyone  
       2019-08-09 16:04:35 +08:00
    我写了个通用爬虫平台,根据配置化来爬取不同网站,思路供参考
    Gakho
        5
    Gakho  
       2019-08-09 16:11:03 +08:00
    这个需求似曾相识。。。还好把这个东西外包出去了
    Dex7er
        6
    Dex7er  
       2019-08-09 16:13:03 +08:00
    我只能说你这个输入网址就能自动爬取网站更新内容的设想很有价值。。。目前做得最好的是谁来着,google ?
    lihongjie0209
        7
    lihongjie0209  
       2019-08-09 16:13:27 +08:00
    没有, 规则只是一部分, 每个站的反爬估计就要单独写了
    zqjilove
        8
    zqjilove  
       2019-08-09 16:35:38 +08:00   ❤️ 1
    如果是文章类型的网站,相对来说,还有解决方式,无需每个网站写规则。只需要通过正文提取的方法来实现,目前也有很多类似的源码可以用( readability、Html2Article 等),坏消息就是,正文提取方式还是会提取到不需要的信息,或者提取不到正文的情况。
    zqjilove
        9
    zqjilove  
       2019-08-09 16:37:07 +08:00
    可以看看这个帖子 /t/309948
    Northxw
        10
    Northxw  
       2019-08-09 17:59:10 +08:00
    爬虫配置系统可以有,但是匹配规则还是要自己写,这个目前没办法的
    augustheart
        11
    augustheart  
       2019-08-09 18:07:48 +08:00
    我抛个砖头,你可以看看有没有帮助。我不是做这个的,就一瞎说。
    你可以研究一下浏览器(比如火狐)的阅读模式是如何定位主要文章内容的。
    TopcoderWuxie
        12
    TopcoderWuxie  
       2019-08-09 18:25:07 +08:00
    抽象出来底层方法,每个网站一个 xpath 是否可行?我看我们公司的爬虫一周几百个忙的不亦乐乎。
    rayhy
        13
    rayhy  
       2019-08-09 18:30:12 +08:00
    之前一直在学生团队里做这种东西的外包。。。思路是把 html 转成 xml,然后每个网站都写 XQuery 来提取信息。相当于是每个都写配置文件。然后把写配置文件,更新配置文件的任务外包给大学生就行。
    locoz
        14
    locoz  
       2019-08-09 18:37:07 +08:00
    只是文章类的东西的话,可以用智能提取,有钱的话直接上 diffbot,效果很好。
    tikazyq
        15
    tikazyq  
       2019-08-09 18:38:05 +08:00 via iPhone
    试试 Crawlab 的可配置爬虫( python 版本),上百个不成问题。请关注最新版本的更新,后期会将可配置爬虫更新到 Golang 版本。

    https:// github.com/tikazyq/crawlab
    locoz
        16
    locoz  
       2019-08-09 18:38:41 +08:00
    没钱的话就拿开源的用用,加一层人工检测的步骤,智能提取的有问题就手动标规则。
    tikazyq
        17
    tikazyq  
       2019-08-09 18:39:29 +08:00 via iPhone
    当然还有一种思路就是写通用爬虫,借助一些算法智能识别所需抓取字段,但这对技术要求比较高
    fifa666
        18
    fifa666  
       2019-08-09 18:44:29 +08:00
    alaikis
        19
    alaikis  
       2019-08-09 19:00:56 +08:00
    就这几个字段,无法就是一个分页方式,一个 xpath 的解析规则,然后用一个表存一下规则就好了
    beastk
        20
    beastk  
       2019-08-09 19:27:44 +08:00 via iPhone
    老铁,规则还是得自己弄,你又不是搞人工智能对不
    heart4lor
        21
    heart4lor  
       2019-08-09 19:53:58 +08:00
    两个想法,一个是每个网站存一组 xpath,对应你需要的信息;另一个是爬取所有文字部分,根据一定的特征、规则来分辨是标题还是正文还是时间,这三者区别都挺大的。人工不好编写规则的话甚至可以考虑写个深度神经网络训练一下提取特征……
    youmumzv2
        22
    youmumzv2  
       2019-08-09 20:05:53 +08:00
    要不要试试我们开发的后羿采集器,基本 90%的网站都可以自动解析网页自动识别出标题时间这类的字段,而且基本功能都是免费的
    mamahaha
        23
    mamahaha  
       2019-08-09 20:07:22 +08:00
    别做梦了,这个需求就算用人工智能,也不是一般的人工智能,你这样闭着眼睛爬,估计也就能爬来一堆广告。
    Cheez
        24
    Cheez  
       2019-08-09 20:17:47 +08:00
    直接用别人的软件。

    直接用别人的框架。
    aaronhua
        25
    aaronhua  
       2019-08-09 21:39:57 +08:00
    已加入豪华收藏套餐
    ErrorMan
        26
    ErrorMan  
       2019-08-10 00:16:17 +08:00 via Android
    如果是 html5 规范应该有类似 article main title 这样的标签来标记对应数据,可以按这个来提取,不过国内网站大部分都没这个习惯吧
    largecat
        27
    largecat  
       2019-08-10 11:50:28 +08:00 via Android
    url 和标题很容易。

    发布时间我觉得设定为你第一次爬取到的时间就行了,
    挂服务器上就不用管了最省事,几分钟弄完。反正是机器干活,带宽放着就是被拿来用的。
    habicat
        28
    habicat  
       2019-08-10 16:18:36 +08:00
    一般都是通用爬虫+算法提正文+配置文件提标题&时间
    habicat
        29
    habicat  
       2019-08-10 16:56:16 +08:00
    我们刚好在干这个 兄弟不考虑外包。。。
    jinxx1
        30
    jinxx1  
       2019-08-11 08:41:13 +08:00
    newspaper3k 这个库能解决很多问题。
    Wh0amis
        31
    Wh0amis  
    OP
       2019-08-12 10:57:00 +08:00
    表哥们的思路很广。很感谢各位表哥的回复。听了各位表哥的建议个人感觉还是得针对目标网站特征划分出群体特征,在根据群体特征编写相应的通用规则。这样才能有效减少工作量。再次感谢楼上各位表哥。
    explorer123
        32
    explorer123  
       2019-08-12 22:57:34 +08:00
    微信公众号部分可以参考下我这个项目中的源代码 https://github.com/LeLe86/vWeChatCrawl
    deepall
        33
    deepall  
       2019-08-13 13:35:40 +08:00
    可以看看 diffbot 这个公司的产品,很牛逼,可惜价格有点高
    或者看看 chrome 的一个插件,简悦,和 safari 上面的阅读模式很像
    我之前公司就是这样,1000 多个网站,1000 多套规则,一个爬虫文件
    MrZok
        34
    MrZok  
       2019-08-13 15:09:42 +08:00
    有什么最优方法么
    chengxiao
        35
    chengxiao  
       2019-08-13 19:02:18 +08:00
    舆情监控吧....readability,goose 匹配 tiitle description 和正文内容吧
    aalikes95
        36
    aalikes95  
       2019-11-20 11:14:06 +08:00
    看看,mark 一下解决方案
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3705 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 10:23 · PVG 18:23 · LAX 02:23 · JFK 05:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.