Python 抓取微信公众号账号信息的方法


Posted in Python onJune 14, 2019

Python 抓取微信公众号账号信息的方法

搜狗微信搜索提供两种类型的关键词搜索,一种是搜索公众号文章内容,另一种是直接搜索微信公众号。通过微信公众号搜索可以获取公众号的基本信息及最近发布的10条文章,今天来抓取一下微信公众号的账号信息

爬虫

首先通过首页进入,可以按照类别抓取,通过“查看更多”可以找出页面链接规则:

Python 抓取微信公众号账号信息的方法

import requests as req
import re
reTypes = r'id="pc_\d*" uigs="(pc_\d*)">([\s\S]*?)</a>'
Entry = "http://weixin.sogou.com/"
entryPage = req.get(Entry)
allTypes = re.findall(reTypes, getUTF8(entryPage))
for (pcid, category) in allTypes:
  for page in range(1, 100):
    url = 'http://weixin.sogou.com/pcindex/pc/{}/{}.html'.format(pcid, page)
    print(url)
    categoryList = req.get(url)
    if categoryList.status_code != 200:
      break

上面代码通过加载更多页面获取加载列表,进而从其中抓取微信公众号详情页面:

reProfile = r'<li id[\s\S]*?<a href="([\s\S]*?)" rel="external nofollow" '
allProfiles = re.findall(reOAProfile, getUTF8(categoryList))
for profile in allProfiles:
  profilePage = req.get(profile)
  if profilePage.status_code != 200:
    continue

进入详情页面可以获取公众号的 名称/ID/功能介绍/账号主体/头像/二维码/最近10篇文章 等信息:

Python 抓取微信公众号账号信息的方法 

注意事项

详情页面链接: http://mp.weixin.qq.com/profile?src=3×tamp=1477208282&ver=1&signature=8rYJ4QV2w5FXSOy6vGn37sUdcSLa8uoyHv3Ft7CrhZhB4wO-bbWG94aUCNexyB7lqRNSazua-2MROwkV835ilg==

1. 验证码

访问详情页面时有可能需要验证码,自动识别验证码还是很有难度的,因此要做好爬虫的伪装工作。

2. 未保存详情页面链接

详情页面的链接中有两个重要参数: timestamp & signature ,这说明页面链接是有时效性的,所以保存下来应该也没用;

3. 二维码

二维码图片链接同样具有时效性,因此如需要最好将图片下载下来。

用 Flask 展示结果

最近 Python 社区出现了一款异步增强版的 Flask 框架: Sanic ,基于 uvloop 和 httptools ,可以达到异步、更快的效果,但保持了与 Flask 一致的简洁语法。虽然项目刚起步,还有很多基本功能为实现,但已经获得了很多关注( 2,222 Star )。这次本打算用抓取的微信公众号信息基于 Sanic 做一个简单的交互应用,但无奈目前还没有加入模板功能,异步的 redis 驱动也还有 BUG 没解决,所以简单尝试了一下之后还是切换回 Flask + SQLite,先把抓取结果呈现出来,后续有机会再做更新。

安装 Sanic

Python 抓取微信公众号账号信息的方法

Debug Sanic

Python 抓取微信公众号账号信息的方法 

Flask + SQLite App

from flask import g, Flask, render_template
import sqlite3
app = Flask(__name__)
DATABASE = "./db/wx.db"
def get_db():
  db = getattr(g, '_database', None)
  if db is None:
    db = g._database = sqlite3.connect(DATABASE)
  return db
@app.teardown_appcontext
def close_connection(exception):
  db = getattr(g, '_database', None)
  if db is not None:
    db.close()
@app.route("/<int:page>")
@app.route("/")
def hello(page=0):
  cur = get_db().cursor()
  cur.execute("SELECT * FROM wxoa LIMIT 30 OFFSET ?", (page*30, ))
  rows = []
  for row in cur.fetchall():
    rows.append(row)
  return render_template("app.html", wx=rows, cp=page)
if __name__ == "__main__":
  app.run(debug=True, port=8000)

总结

以上所述是小编给大家介绍的Python 抓取微信公众号账号信息,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python中矩阵库Numpy基本操作详解
Nov 21 Python
Python实现简单的语音识别系统
Dec 13 Python
python OpenCV学习笔记实现二维直方图
Feb 08 Python
python利用requests库模拟post请求时json的使用教程
Dec 07 Python
对pandas读取中文unicode的csv和添加行标题的方法详解
Dec 12 Python
树莓派用python中的OpenCV输出USB摄像头画面
Jun 22 Python
Python使用pyserial进行串口通信的实例
Jul 02 Python
wxPython实现列表增删改查功能
Nov 19 Python
python Django 反向访问器的外键冲突解决
May 20 Python
一文解决django 2.2与mysql兼容性问题
Jul 15 Python
python中slice参数过长的处理方法及实例
Dec 15 Python
五分钟学会怎么用Pygame做一个简单的贪吃蛇
Jan 06 Python
python字典一键多值实例代码分享
Jun 14 #Python
Python 窗体(tkinter)按钮 位置实例
Jun 13 #Python
python3 tkinter实现点击一个按钮跳出另一个窗口的方法
Jun 13 #Python
python tkinter canvas 显示图片的示例
Jun 13 #Python
Python通用函数实现数组计算的方法
Jun 13 #Python
PyCharm搭建Spark开发环境实现第一个pyspark程序
Jun 13 #Python
Pycharm如何打断点的方法步骤
Jun 13 #Python
You might like
PHP学习笔记之二 php入门知识
2011/01/12 PHP
php 数组的一个悲剧?
2011/05/11 PHP
ThinkPHP 防止表单重复提交的方法
2011/08/08 PHP
php中echo()和print()、require()和include()等易混淆函数的区别
2012/02/22 PHP
无JS,完全php面向过程数据分页实现代码
2012/08/27 PHP
php实现的二叉树遍历算法示例
2017/06/15 PHP
PHP PDOStatement::getColumnMeta讲解
2019/02/01 PHP
JavaScript中获取未知对象属性的代码
2011/04/27 Javascript
基于jQuery实现的当离开页面时出现提示的实现代码
2011/06/27 Javascript
JS中attr和prop属性的区别以及优先选择示例介绍
2014/06/30 Javascript
JavaScript实现的一个日期格式化函数分享
2014/12/06 Javascript
js实现类似于add(1)(2)(3)调用方式的方法
2015/03/04 Javascript
javascript实现网页子页面遍历回调的方法(涉及 window.frames、递归函数、函数上下文)
2015/07/27 Javascript
jQuery获取DOM节点实例分析(2种方式)
2015/12/15 Javascript
Javascript随机标签云代码实例
2016/06/21 Javascript
原生JS实现首页进度加载动画
2016/09/14 Javascript
对Vue- 动态元素属性及v-bind和v-model的区别详解
2018/08/27 Javascript
angularJs中json数据转换与本地存储的实例
2018/10/08 Javascript
JavaScript面向对象程序设计中对象的定义和继承详解
2019/07/29 Javascript
重置Redux的状态数据的方法实现
2019/11/18 Javascript
使用PreloadJS加载图片资源的基础方法详解
2020/02/03 Javascript
antd配置config-overrides.js文件的操作
2020/10/31 Javascript
跟老齐学Python之总结参数的传递
2014/10/10 Python
教你用一行Python代码实现并行任务(附代码)
2018/02/02 Python
django缓存配置的几种方法详解
2018/07/16 Python
在django模板中实现超链接配置
2019/08/21 Python
在OpenCV里使用Camshift算法的实现
2019/11/22 Python
Numpy之reshape()使用详解
2019/12/26 Python
将matplotlib绘图嵌入pyqt的方法示例
2020/01/08 Python
Lulu & Georgia官方网站:购买地毯、家具、抱枕、壁纸、床上用品等
2018/03/19 全球购物
莫斯科大型旅游休闲商品超市:Camping.ru
2020/09/16 全球购物
公证书标准格式
2014/04/10 职场文书
领导班子四风问题个人对照检查材料
2014/10/04 职场文书
2014年平安建设工作总结
2014/11/19 职场文书
个人委托函范文
2015/01/29 职场文书
python基础学习之生成器与文件系统知识总结
2021/05/25 Python