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中的各种装饰器详解
Apr 11 Python
用tensorflow实现弹性网络回归算法
Jan 09 Python
python dataframe astype 字段类型转换方法
Apr 11 Python
PyQt5每天必学之工具提示功能
Apr 19 Python
Python 在字符串中加入变量的实例讲解
May 02 Python
对python的输出和输出格式详解
Dec 08 Python
Win10下Python3.7.3安装教程图解
Jul 08 Python
pygame库实现俄罗斯方块小游戏
Oct 29 Python
Python ORM编程基础示例
Feb 02 Python
python如何实现读取并显示图片(不需要图形界面)
Jul 08 Python
python爬虫scrapy框架之增量式爬虫的示例代码
Feb 26 Python
PyTorch中permute的使用方法
Apr 26 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
我常用的几个类
2006/10/09 PHP
用Flash图形化数据(一)
2006/10/09 PHP
thinkphp中html:list标签传递多个参数实例
2014/10/30 PHP
简单谈谈php中的unicode和utf8编码
2015/06/10 PHP
PHP的Socket网络编程入门指引
2015/08/11 PHP
Jquery AutoComplete自动完成 的使用方法实例
2010/03/19 Javascript
基于JQuery的数字改变的动画效果--可用来做计数器
2010/08/11 Javascript
解决JS中乘法的浮点错误的方法
2014/01/03 Javascript
jQuery实现仿QQ在线客服效果的滚动层代码
2015/10/15 Javascript
jQuery基于ID调用指定iframe页面内的方法
2016/07/06 Javascript
Vue.JS入门教程之自定义指令
2016/12/08 Javascript
js实现简单的计算器功能
2017/01/16 Javascript
javascript作用域链与执行环境详解
2017/03/25 Javascript
jQuery实现在HTML文档加载完毕后自动执行某个事件的方法
2017/05/08 jQuery
js实现带进度条提示的多视频上传功能
2020/12/13 Javascript
vue组件之Alert的实现代码
2017/10/17 Javascript
js实现Tab选项卡切换效果
2020/07/17 Javascript
vue2.0 使用element-ui里的upload组件实现图片预览效果方法
2018/09/04 Javascript
JS基于Location实现访问Url、重定向及刷新页面的方法分析
2018/12/03 Javascript
详解微信小程序实现仿微信聊天界面(各种细节处理)
2019/02/17 Javascript
Angular CLI 使用教程指南参考小结
2019/04/10 Javascript
vue实现输入框自动跳转功能
2020/05/20 Javascript
在nuxt中使用路由重定向的实例
2020/11/06 Javascript
使用Python下的XSLT API进行web开发的简单教程
2015/04/15 Python
python统计文本字符串里单词出现频率的方法
2015/05/26 Python
python读取二进制mnist实例详解
2017/05/31 Python
python实现实时视频流播放代码实例
2020/01/11 Python
TensorFLow 数学运算的示例代码
2020/04/21 Python
以特惠价提供在线奢侈品购物:FRMODA.com
2018/01/25 全球购物
Charlotte Tilbury澳大利亚官网:英国美妆品牌
2018/10/05 全球购物
将时尚融入珠宝:Adornmonde
2019/10/17 全球购物
学习新党章思想汇报
2014/01/09 职场文书
2014年小学辅导员工作总结
2014/12/23 职场文书
《假如》教学反思
2016/02/17 职场文书
jupyter notebook保存文件默认路径更改方法汇总(亲测可以)
2021/06/09 Python
动漫APP软件排行榜前十名,半次元上榜,第一款由腾讯公司推出
2022/03/18 杂记