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

开源公司内部的微信爬虫,寻求志同道合的人一起来改进

  •  5
     
  •   crayonyi · 2016-09-20 18:35:51 +08:00 · 11886 次点击
    这是一个创建于 2987 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一个爬取微信公众号文章的爬虫

    github: https://github.com/bowenpay/wechat-spider

    微信爬虫的由来

    我们是一家帮助中国 5000 万贫困人口与社会公益组织的对接的公司。

    我们通过国家和地方政府的“建档立卡”系统,获取到了一手的贫困户数据,目前有 100 万左右,总数为 5000 万,目前每个月都在增长。

    为了帮助这部分贫困户对接公益机构,我写了这个微信爬虫,从微信公众号发布的文章中上找出最新的公益项目。

    这种找项目的方式的可行性,我们还在试验中。

    起初,为了快速上线,本爬虫的代码是基于我的另一个 通用爬虫项目 开发的,还不是很完善,所以希望任何对本项目感兴趣的人联系我,与我一同改进这个项目。

    联系方式:在该 issue 下留言告诉我 点击去留言

    界面预览

    1 ) 要爬取的微信公众号列表

    2 ) 要爬取的文章关键字列表

    3 ) 已经爬取的微信文章

    4 ) 查看文章,并标记是否可用

    5 ) 控制爬取进程数

    使用到的技术和框架

    django mysql redis lxml selenium

    65 条回复    2020-03-14 20:11:54 +08:00
    crayonyi
        1
    crayonyi  
    OP
       2016-09-20 18:56:48 +08:00
    咨询下,现在获取微信文章的阅读数,都有哪些方法?
    em70
        2
    em70  
       2016-09-20 19:29:54 +08:00 via iPhone
    公司专业做公益,这是一个悖论
    ibufu
        3
    ibufu  
       2016-09-20 19:34:33 +08:00
    你应该去 py 社区吧。
    zhy0216
        4
    zhy0216  
       2016-09-20 19:48:26 +08:00
    @ibufu v2 就是.... -_-|||
    shoaly
        5
    shoaly  
       2016-09-20 19:57:16 +08:00
    @em70 公益不允许赚钱机构介入 也是中国公益发展不起来的原因.. 不赚钱的事 始终不长久. 赚钱不等于就不公益了
    Chyroc
        6
    Chyroc  
       2016-09-20 20:01:58 +08:00 via iPhone
    @crayonyi https://github.com/Chyroc/WechatSogou
    这里面有过去阅读数的方法
    liangmishi
        7
    liangmishi  
       2016-09-20 20:27:12 +08:00 via Android
    @ibufu 有其他好的 py 社区吗
    lxyyzm
        8
    lxyyzm  
       2016-09-20 20:28:53 +08:00 via Android
    好贴必须顶
    yaotian
        9
    yaotian  
       2016-09-20 20:39:37 +08:00
    sogo 反爬机制一直更新。。。
    vivagonna
        10
    vivagonna  
       2016-09-20 21:04:19 +08:00
    还不太懂 python ,看起来不错, mark 一下
    crayonyi
        11
    crayonyi  
    OP
       2016-09-20 21:10:09 +08:00
    @Chyroc 多谢 我看看
    likai
        12
    likai  
       2016-09-20 21:12:06 +08:00
    @shoaly 中国公益发展不起来可和这个没关系..
    你们公司专门对接需要帮助的贫困户和公益组织.难道是像房屋中介一样收中介费?不然怎么养活公司?
    crayonyi
        13
    crayonyi  
    OP
       2016-09-20 21:13:58 +08:00   ❤️ 1
    @yaotian 用了代理池、 Firefox+selenium ,模拟人工点击,所以一直都挺稳定的。除非搜狗微信的页面样式换了,需要重新更新一下爬取模板。
    crayonyi
        14
    crayonyi  
    OP
       2016-09-20 21:20:56 +08:00   ❤️ 1
    @shoaly 我们有一家公益机构,一家公司。 公益的事情公益做,赚钱的事情公司做。
    lixuda
        15
    lixuda  
       2016-09-20 21:31:16 +08:00
    不会出现验证码吗?
    wangchyz
        16
    wangchyz  
       2016-09-20 21:40:35 +08:00
    用商业的手法做公益,不冲突
    cqcn1991
        17
    cqcn1991  
       2016-09-20 21:43:50 +08:00
    非常支持!
    希望以后有机会用到,和提 PR
    lcc4376
        18
    lcc4376  
       2016-09-20 21:46:25 +08:00
    幫頂
    em70
        19
    em70  
       2016-09-20 23:25:02 +08:00 via iPhone
    @crayonyi 红十字会也是这样想的,所以不被人信任。公司的天职是赚钱,当公众利益与股东利益冲突时候,公司应该坚定选择后者,所以公益的事应该给非盈利组织去做,比如维基百科
    lxyyzm
        20
    lxyyzm  
       2016-09-21 00:31:35 +08:00 via Android
    @em70 智商捉急啊,人都说了公司是赚钱的,只不过客户是公益组织而已
    PP
        21
    PP  
       2016-09-21 00:43:18 +08:00
    @lxyyzm 尽管人无完人,可是如果您在 V 站活动时间足够长,那么一定会有机会读到他的许多言论,您将会发现他的才智还是很不错的。用“智商捉急”来评论他人很不礼貌,还请尊重他人!
    gladuo
        22
    gladuo  
       2016-09-21 01:44:42 +08:00
    @PP hhh
    lichun
        23
    lichun  
       2016-09-21 01:47:26 +08:00 via iPhone   ❤️ 1
    @lxyyzm 这不是写最小天气预报那 XX 嘛?还会喷别人?
    Lonely
        24
    Lonely  
       2016-09-21 05:08:52 +08:00 via iPhone   ❤️ 1
    @lichun 这人就是个 sb ,不必理他
    lxyyzm
        25
    lxyyzm  
       2016-09-21 08:35:11 +08:00 via Android
    @PP 至少在这个问题上智商显得有点捉急 o(∩_∩)o ,不过还是多谢您的善意提醒!@em70 ,如果有冒犯到 ,向您道歉!
    xi_lin
        26
    xi_lin  
       2016-09-21 09:18:49 +08:00 via iPhone
    手动点赞
    PP
        27
    PP  
       2016-09-21 09:41:48 +08:00 via iPad
    @lichun @Lonely Be nice, be kind.
    est
        28
    est  
       2016-09-21 09:53:43 +08:00
    其实爬 sogou 的都是爬的「订阅号」,真正的「公众号」 比如 招商银行 好像都爬不到。
    crayonyi
        29
    crayonyi  
    OP
       2016-09-21 10:20:05 +08:00
    @est 你说的是服务号吧 好像确实没有。 不过服务号定位不一样,侧重于服务,而非宣传。一个月只能发 4 篇文章,量本身也不大。暂时还没有去考虑。
    crayonyi
        30
    crayonyi  
    OP
       2016-09-21 10:20:50 +08:00
    @lixuda 会的。所以用了代理池,而且代理服务器的 ip 是 3 分钟切换一次。
    crayonyi
        31
    crayonyi  
    OP
       2016-09-21 10:33:10 +08:00
    @em70 公益行业是个互联网化程度很低的行业,也是效率较低的行业。 但这也正是我们的机会。 公益和商业是可以共赢的。公司如果考虑长远发展,不只顾眼前的利益,是能获取更大利益的。
    rebelboy2
        32
    rebelboy2  
       2016-09-21 10:55:06 +08:00
    我给你说,爬这种数据都没法直接赚钱。
    要爬爬那种数据本身就能兑换价值的,比如 国际机票,国内机票
    这种投放到携程去哪平台,可以直接产生价值
    Kuo
        33
    Kuo  
       2016-09-21 11:06:43 +08:00
    看起来不错,感谢分享
    crayonyi
        34
    crayonyi  
    OP
       2016-09-21 11:21:51 +08:00
    @rebelboy2 也有一些人找过我,要爬这种类型的数据、以及做数据分析和广告投放的。 但是公司的主业是做“中国 5000 万贫困人口与社会公益组织的对接”,所以就没有去做你说的“据本身就能兑换价值”的事情。
    我一个人也有些忙不经过来。
    不过这个爬虫是可以爬任意数据的,如果你感兴趣,可以做一些尝试。 我可以帮你搭建下基础环境。
    xinali
        35
    xinali  
       2016-09-21 11:26:53 +08:00 via Android
    @crayonyi 怎么加入?
    crayonyi
        36
    crayonyi  
    OP
       2016-09-21 11:36:56 +08:00
    @xinali 在 github issue 下留言告诉我 https://github.com/bowenpay/wechat-spider/issues/1 ,这两天我把要做的事情,都列出来。 合作方式也写在上面。
    figofuture
        37
    figofuture  
       2016-09-21 11:40:00 +08:00
    mark
    ljcarsenal
        38
    ljcarsenal  
       2016-09-21 11:55:50 +08:00
    @rebelboy2 去哪携程的什么平台啊。。会抓取却不知道如何利用价值
    goodluck
        39
    goodluck  
       2016-09-21 12:00:17 +08:00
    要不是最近比较忙,我就来参加了。。。上班狗闲暇时间很少。。,经常加班。
    bramblex
        40
    bramblex  
       2016-09-21 12:05:49 +08:00
    @likai

    国外的 ngo 还真是这么做的, ngo 可以在捐款中抽取 ngo 运营费用,其中包括运营人员的基本工资。但是所有的开销啥的都必须是透明的,被监督的。

    虽然做公益是靠理想,但是光靠理想会饿死的。然而广大圣母婊往往都喜欢脱离现实,不管不顾他人死活,只为了抒发原始情绪,感动自己。
    GitFree
        41
    GitFree  
       2016-09-21 12:19:38 +08:00
    老朋友手工点赞
    fhefh
        42
    fhefh  
       2016-09-21 12:46:45 +08:00
    先 mark
    crayonyi
        43
    crayonyi  
    OP
       2016-09-21 13:13:40 +08:00
    @likai 目前的钱都是我们自己垫的,有在接触投资结构。
    crayonyi
        44
    crayonyi  
    OP
       2016-09-21 13:23:12 +08:00
    @GitFree 🤗
    crayonyi
        45
    crayonyi  
    OP
       2016-09-21 13:33:09 +08:00
    @bramblex 国内也有一些都是公开的,每年年报里面都有详细说明。 基金会中心网 http://www.foundationcenter.org.cn/ 有一个透明指数,可以看出行业内的透明水平。
    globetour
        46
    globetour  
       2016-09-21 14:12:02 +08:00 via Android
    搜狗平台的验证码很难搞,最好有失败和重试机制,以及能不能爬历史文章
    hustlzp
        47
    hustlzp  
       2016-09-21 14:45:04 +08:00
    支持公益。
    defia
        48
    defia  
       2016-09-21 14:45:24 +08:00
    @crayonyi 我也想问楼主验证码是怎么解决的。。
    guotie
        49
    guotie  
       2016-09-21 14:54:13 +08:00
    支持。

    验证码可以找打码平台解决。
    crayonyi
        50
    crayonyi  
    OP
       2016-09-21 15:11:21 +08:00
    @defia 我实际上是没有解决。 通过足够多的代理 ip 和失败重试机制,绕过这个限制。
    colordancer
        51
    colordancer  
       2016-09-21 17:54:30 +08:00
    这个必需 mark
    chaichaichai
        52
    chaichaichai  
       2016-09-21 23:12:43 +08:00
    试一下抓新榜和传送门?
    crayonyi
        53
    crayonyi  
    OP
       2016-09-22 11:13:12 +08:00
    @chaichaichai 传送门和新榜的文章不全。
    lrh3321
        54
    lrh3321  
       2016-09-22 12:58:18 +08:00
    马克一下
    lixuda
        55
    lixuda  
       2016-10-19 09:46:47 +08:00
    @crayonyi 具体办法是怎么操作的?
    crayonyi
        56
    crayonyi  
    OP
       2016-10-19 10:26:49 +08:00
    @lixuda 爬取的时候,如果遇到验证码,则放弃本次爬取任务,并记录重试次数,然后将任务重新放到爬取队列。 下次爬取的时候,会随机选择一个代理 ip 爬取。 如此重复,直到不出现验证码,或者达到重试次数限制。
    lixuda
        57
    lixuda  
       2016-10-19 13:10:14 +08:00
    @crayonyi 代理 ip 是网络还是购买的?
    crayonyi
        58
    crayonyi  
    OP
       2016-10-20 10:37:43 +08:00
    @lixuda 1 淘宝上搜动态 vps ,有很多卖的。(便宜、方便) 2 自己找机房,拨号上网的那种,(今日头条用的是这种方式,稳定,快,可控)

    我用的是这家的: https://item.taobao.com/item.htm?spm=a230r.1.14.1.RT0O2l&id=525941770043&ns=1&abbucket=11#detail
    crayonyi
        59
    crayonyi  
    OP
       2016-10-20 10:42:23 +08:00
    @lixuda linux 下和 windows 下都需要准备 3 个软件:
    1 定时自动重新拨号软件(如拨号精灵)
    2 实时获取 ip 并提交到服务端(在项目目录下有, bin/getNewIp.py
    3 代理软件(如 cproxy )
    ospider
        60
    ospider  
       2016-12-28 21:43:52 +08:00
    @crayonyi Hi ,你还在做吗,你怎么知道 “今日头条用的是这种方式,稳定,快,可控”
    hadoop
        61
    hadoop  
       2017-02-01 23:15:17 +08:00
    @crayonyi vps 的 ip 变了,那你怎么连过去呢?还是把程序放在动态 ip vps 上跑
    crayonyi
        62
    crayonyi  
    OP
       2017-02-03 00:27:42 +08:00
    @hadoop 需要在 vps 上部署一个脚本,实时获取 ip ,提交到服务端。
    你说的把程序放在动态 ip vps 上跑也是可以的。
    crayonyi
        63
    crayonyi  
    OP
       2017-02-03 00:28:29 +08:00
    @ospider 早期的今日头条就是这样的。 因为我维护过。
    ospider
        64
    ospider  
       2017-02-04 11:25:44 +08:00
    @crayonyi 哈哈,原来是前辈
    toliho
        65
    toliho  
       2020-03-14 20:11:54 +08:00
    可惜没有更新了,支持楼主和你的公益事业
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1151 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 18:12 · PVG 02:12 · LAX 10:12 · JFK 13:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.