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 相关文章推荐
win与linux系统中python requests 安装
Dec 04 Python
python+matplotlib实现礼盒柱状图实例代码
Jan 16 Python
Python使用正则表达式获取网页中所需要的信息
Jan 29 Python
对Python3.6 IDLE常用快捷键介绍
Jul 16 Python
python的set处理二维数组转一维数组的方法示例
May 31 Python
python实现连连看辅助(图像识别)
Mar 25 Python
python实现可下载音乐的音乐播放器
Feb 25 Python
Python Pillow(PIL)库的用法详解
Sep 19 Python
Python colormap库的安装和使用详情
Oct 06 Python
Python爬虫之Selenium鼠标事件的实现
Dec 04 Python
class类在python中获取金融数据的实例方法
Dec 10 Python
Python Numpy库的超详细教程
Apr 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
简单的页面缓冲技术
2006/10/09 PHP
php array_slice函数的使用以及参数详解
2008/08/30 PHP
php抓取https的内容的代码
2010/04/06 PHP
thinkphp3.0输出重复两次的解决方法
2014/12/19 PHP
php去除html标记的原生函数详解
2015/01/27 PHP
php使用parse_url和parse_str解析URL
2015/02/22 PHP
php无法连接mysql数据库的正确解决方法
2016/07/01 PHP
些很实用且必用的小脚本代码
2006/06/26 Javascript
提高网站信任度的技巧
2008/10/17 Javascript
Javascript 运动中Offset的bug解决方案
2014/12/24 Javascript
javascript验证邮件地址和MX记录的方法
2015/06/16 Javascript
使用ngView配合AngularJS应用实现动画效果的方法
2015/06/19 Javascript
jQuery中bind(),live(),delegate(),on()绑定事件方法实例详解
2016/01/19 Javascript
jQuery实现选项卡功能(两种方法)
2017/03/08 Javascript
详解Vue项目在其他电脑npm run dev运行报错的解决方法
2018/10/29 Javascript
微信小程序实现swiper切换卡内嵌滚动条不显示的方法示例
2018/12/20 Javascript
开源一个微信小程序仪表盘组件过程解析
2019/07/30 Javascript
微信小程序实现购物车功能
2020/11/18 Javascript
[07:20]2018DOTA2国际邀请赛寻真——逐梦Mineski
2018/08/10 DOTA
[01:10:24]DOTA2-DPC中国联赛 正赛 VG vs Aster BO3 第一场 2月28日
2021/03/11 DOTA
python实现红包裂变算法
2016/02/16 Python
Python脚本实时处理log文件的方法
2016/11/21 Python
Python2实现的图片文本识别功能详解
2018/07/11 Python
Python远程开发环境部署与调试过程图解
2019/12/09 Python
菲律宾票务网站:StubHub菲律宾
2018/04/21 全球购物
台湾旅游网站:灿星旅游
2018/10/11 全球购物
网络公司美工设计工作个人的自我评价
2013/11/03 职场文书
学习委员自我鉴定
2014/01/13 职场文书
卫生系统先进事迹
2014/05/13 职场文书
廉洁家庭事迹材料
2014/05/15 职场文书
2014年教师党员自我评议
2014/09/19 职场文书
机关作风建设剖析材料
2014/10/11 职场文书
承兑汇票延期证明
2015/06/23 职场文书
捐款仪式主持词
2015/07/04 职场文书
css实现文章分割线样式的多种方法总结
2021/04/21 HTML / CSS
一次SQL查询优化原理分析(900W+数据从17s到300ms)
2022/06/10 SQL Server