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中的并发编程实例
Jul 07 Python
在Python中进行自动化单元测试的教程
Apr 15 Python
在Python的Django框架中编写错误提示页面
Jul 22 Python
Python实现的单向循环链表功能示例
Nov 10 Python
Python爬取数据保存为Json格式的代码示例
Apr 09 Python
Django模型序列化返回自然主键值示例代码
Jun 12 Python
使用Python给头像加上圣诞帽或圣诞老人小图标附源码
Dec 25 Python
django 文件上传功能的相关实例代码(简单易懂)
Jan 22 Python
Python定义一个函数的方法
Jun 15 Python
为什么python比较流行
Jun 19 Python
python实现猜数游戏(保存游戏记录)
Jun 22 Python
pyx文件 生成pyd 文件用于 cython调用的实现
Mar 04 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中的phpinfo()函数
2013/06/06 PHP
php生成圆角图片的方法
2015/04/07 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
Javascript实现的分页函数
2006/12/22 Javascript
JavaScript 数组的 uniq 方法
2008/01/23 Javascript
xml转json的js代码
2012/08/28 Javascript
js 输出内容到新窗口具体实现代码
2013/05/31 Javascript
jquery select多选框的左右移动 具体实现代码
2013/07/03 Javascript
浅谈javascript 函数属性和方法
2015/01/21 Javascript
JavaScript操作Cookie方法实例分析
2015/05/27 Javascript
高性能JavaScript DOM编程(1)
2015/08/11 Javascript
浅谈JavaScript作用域和闭包
2017/09/18 Javascript
Vue条件循环判断+计算属性+绑定样式v-bind的实例
2018/09/18 Javascript
vue.js父子组件通信动态绑定的实例
2018/09/28 Javascript
深入理解vue-class-component源码阅读
2019/02/18 Javascript
Vue 中可以定义组件模版的几种方式
2019/08/06 Javascript
JavaScript碰撞检测原理及其实现代码
2020/03/12 Javascript
vue实现几秒后跳转新页面代码
2020/09/09 Javascript
[04:14]从西雅图到上海——玩家自制DOTA2主题歌曲应援TI9
2019/07/11 DOTA
python计算一个序列的平均值的方法
2015/07/11 Python
全面了解python中的类,对象,方法,属性
2016/09/11 Python
python和opencv实现抠图
2018/07/18 Python
python点击鼠标获取坐标(Graphics)
2019/08/10 Python
pycharm 配置svn的图文教程(手把手教你)
2021/01/15 Python
HTML5 placeholder属性详解
2016/06/22 HTML / CSS
Expedia印度:您的一站式在线旅游网站
2017/08/24 全球购物
绘画专业自荐信范文
2014/02/23 职场文书
人大调研汇报材料
2014/08/14 职场文书
讲文明懂礼貌演讲稿
2014/09/11 职场文书
2014新生大学四年计划书
2014/09/21 职场文书
延安红色之旅心得体会
2014/10/07 职场文书
个人融资协议书范本两则
2014/10/15 职场文书
幼儿园园长个人总结
2015/03/02 职场文书
班级联欢会主持词
2015/07/03 职场文书
辞职离别感言
2015/08/04 职场文书
SQL使用复合索引实现数据库查询的优化
2022/05/25 SQL Server