开源Python微信爬虫项目,寻求志同道合的人一起来改进
一个爬取微信公众号文章的爬虫
github: https://github.com/bowenpay/wechat-spider
微信爬虫的由来
我们是一家帮助中国 5000 万贫困人口与社会公益组织的对接的公司。
我们通过国家和地方政府的“建档立卡”系统,获取到了一手的贫困户数据,目前有 100 万左右,总数为 5000 万,目前每个月都在增长。
为了帮助这部分贫困户对接公益机构,我写了这个微信爬虫,从微信公众号发布的文章中上找出最新的公益项目。
这种找项目的方式的可行性,我们还在试验中。
起初,为了快速上线,本爬虫的代码是基于我的另一个 通用爬虫项目 开发的,还不是很完善,所以希望任何对本项目感兴趣的人联系我,与我一同改进这个项目。
联系方式:在该 issue 下留言告诉我 点击去留言
界面预览
1 ) 要爬取的微信公众号列表

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

3 ) 已经爬取的微信文章

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

5 ) 控制爬取进程数

使用到的技术和框架
django mysql redis lxml selenium
开源Python微信爬虫项目,寻求志同道合的人一起来改进
咨询下,现在获取微信文章的阅读数,都有哪些方法?
这个项目听起来挺有意思的。微信爬虫确实是个有挑战性的领域,尤其是在反爬机制越来越严的情况下。我之前也折腾过类似的,主要难点在于模拟登录、处理动态加载和规避风控。
一个基础框架可以这么搭:
import requests
import time
import json
from bs4 import BeautifulSoup
class WeChatCrawler:
def __init__(self):
self.session = requests.Session()
self.headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}
def login(self, username, password):
# 这里需要处理二维码登录或账号密码登录
# 实际实现会更复杂,需要处理验证码等
pass
def get_article_list(self, official_account):
url = f'https://mp.weixin.qq.com/profile?src=3×tamp={int(time.time())}'
# 实际需要构造正确的请求参数
response = self.session.get(url, headers=self.headers)
return self.parse_article_list(response.text)
def parse_article_list(self, html):
soup = BeautifulSoup(html, 'html.parser')
articles = []
# 解析文章列表的具体逻辑
return articles
def get_article_content(self, article_url):
response = self.session.get(article_url, headers=self.headers)
return self.parse_article_content(response.text)
# 使用示例
if __name__ == '__main__':
crawler = WeChatCrawler()
# crawler.login('your_username', 'your_password')
articles = crawler.get_article_list('target_account')
不过说实话,纯requests+BeautifulSoup的方案现在很难稳定运行。更靠谱的是用selenium或playwright模拟浏览器,或者直接调用微信开放平台API(如果有权限的话)。
项目可以往这几个方向改进:完善登录模块、增加代理池支持、实现分布式爬取、添加数据存储模块。我比较熟悉异步爬虫和反反爬策略,可以帮忙优化这部分。
有GitHub链接吗?我可以看看现有代码结构。
公司专业做公益,这是一个悖论
你应该去 py 社区吧。
v2 就是… -_-|||
公益不允许赚钱机构介入 也是中国公益发展不起来的原因… 不赚钱的事 始终不长久. 赚钱不等于就不公益了
https://github.com/Chyroc/WechatSogou
这里面有过去阅读数的方法
有其他好的 py 社区吗
好贴必须顶
sogo 反爬机制一直更新。。。
还不太懂 python ,看起来不错, mark 一下
多谢 我看看
中国公益发展不起来可和这个没关系…
你们公司专门对接需要帮助的贫困户和公益组织.难道是像房屋中介一样收中介费?不然怎么养活公司?
用了代理池、 Firefox+selenium ,模拟人工点击,所以一直都挺稳定的。除非搜狗微信的页面样式换了,需要重新更新一下爬取模板。
我们有一家公益机构,一家公司。 公益的事情公益做,赚钱的事情公司做。
不会出现验证码吗?
用商业的手法做公益,不冲突
非常支持!
希望以后有机会用到,和提 PR
幫頂
红十字会也是这样想的,所以不被人信任。公司的天职是赚钱,当公众利益与股东利益冲突时候,公司应该坚定选择后者,所以公益的事应该给非盈利组织去做,比如维基百科
尽管人无完人,可是如果您在 V 站活动时间足够长,那么一定会有机会读到他的许多言论,您将会发现他的才智还是很不错的。用“智商捉急”来评论他人很不礼貌,还请尊重他人!
hhh
这不是写最小天气预报那 XX 嘛?还会喷别人?
这人就是个 sb ,不必理他
至少在这个问题上智商显得有点捉急 o(∩_∩)o ,不过还是多谢您的善意提醒!em70 ,如果有冒犯到 ,向您道歉!
手动点赞
Be nice, be kind.
其实爬 sogou 的都是爬的「订阅号」,真正的「公众号」 比如 招商银行 好像都爬不到。
你说的是服务号吧 好像确实没有。 不过服务号定位不一样,侧重于服务,而非宣传。一个月只能发 4 篇文章,量本身也不大。暂时还没有去考虑。
会的。所以用了代理池,而且代理服务器的 ip 是 3 分钟切换一次。
公益行业是个互联网化程度很低的行业,也是效率较低的行业。 但这也正是我们的机会。 公益和商业是可以共赢的。公司如果考虑长远发展,不只顾眼前的利益,是能获取更大利益的。
我给你说,爬这种数据都没法直接赚钱。
要爬爬那种数据本身就能兑换价值的,比如 国际机票,国内机票
这种投放到携程去哪平台,可以直接产生价值
看起来不错,感谢分享
也有一些人找过我,要爬这种类型的数据、以及做数据分析和广告投放的。 但是公司的主业是做“中国 5000 万贫困人口与社会公益组织的对接”,所以就没有去做你说的“据本身就能兑换价值”的事情。
我一个人也有些忙不经过来。
不过这个爬虫是可以爬任意数据的,如果你感兴趣,可以做一些尝试。 我可以帮你搭建下基础环境。
怎么加入?
在 github issue 下留言告诉我 https://github.com/bowenpay/wechat-spider/issues/1 ,这两天我把要做的事情,都列出来。 合作方式也写在上面。
mark
去哪携程的什么平台啊。。会抓取却不知道如何利用价值
国外的 ngo 还真是这么做的, ngo 可以在捐款中抽取 ngo 运营费用,其中包括运营人员的基本工资。但是所有的开销啥的都必须是透明的,被监督的。
虽然做公益是靠理想,但是光靠理想会饿死的。然而广大圣母婊往往都喜欢脱离现实,不管不顾他人死活,只为了抒发原始情绪,感动自己。
老朋友手工点赞
先 mark
目前的钱都是我们自己垫的,有在接触投资结构。
🤗
国内也有一些都是公开的,每年年报里面都有详细说明。 基金会中心网 http://www.foundationcenter.org.cn/ 有一个透明指数,可以看出行业内的透明水平。
搜狗平台的验证码很难搞,最好有失败和重试机制,以及能不能爬历史文章
支持公益。
我也想问楼主验证码是怎么解决的。。
支持。
验证码可以找打码平台解决。
我实际上是没有解决。 通过足够多的代理 ip 和失败重试机制,绕过这个限制。
这个必需 mark
试一下抓新榜和传送门?
传送门和新榜的文章不全。
马克一下
具体办法是怎么操作的?
爬取的时候,如果遇到验证码,则放弃本次爬取任务,并记录重试次数,然后将任务重新放到爬取队列。 下次爬取的时候,会随机选择一个代理 ip 爬取。 如此重复,直到不出现验证码,或者达到重试次数限制。
代理 ip 是网络还是购买的?
1 淘宝上搜动态 vps ,有很多卖的。(便宜、方便) 2 自己找机房,拨号上网的那种,(今日头条用的是这种方式,稳定,快,可控)
我用的是这家的: https://item.taobao.com/item.htm?spm=a230r.1.14.1.RT0O2l&id=525941770043&ns=1&abbucket=11#detail
linux 下和 windows 下都需要准备 3 个软件:
1 定时自动重新拨号软件(如拨号精灵)
2 实时获取 ip 并提交到服务端(在项目目录下有, bin/getNewIp.py )
3 代理软件(如 cproxy )
Hi ,你还在做吗,你怎么知道 “今日头条用的是这种方式,稳定,快,可控”
vps 的 ip 变了,那你怎么连过去呢?还是把程序放在动态 ip vps 上跑
需要在 vps 上部署一个脚本,实时获取 ip ,提交到服务端。
你说的把程序放在动态 ip vps 上跑也是可以的。
早期的今日头条就是这样的。 因为我维护过。
哈哈,原来是前辈
可惜没有更新了,支持楼主和你的公益事业


