基于python抓取微信公众号的实验爬虫

Python爬取微信公众号

工具准备
fiddler+pycharm
fiddler设置手机端代理抓包
找到一段相似代码
在这里插入图片描述

这里返回一段json数据,json解析后得到在这里插入图片描述
对比手机端在这里插入图片描述
此页面可以拿到该公众号所有的历史文章链接,这样一来思路就有了,我们需要去这个页面。配合appium和mitmproxy就可以获取到所有数据。
#-安装mitmproxy pip install mitmproxy
#- appium需要去官网下载appium传送门

#mitmproxy 可以配合python脚本使用不过需要函数固定格式
def response(flow):
"""抓包"""
	if 'qq.com/mp/profile_ext?action=getmsg' in flow.request.url:
		with open("gzh.txt","a+",endcode="utf-8") as f:
			f.write(flow.response.text)
#其实可以存入数据库的,这里没做进一步处理,旨在提供一种思路。
#mitmproxy运行在8080端口,手机设置代理即可,cmd里面启动mitmdump -s 你的python脚本(就是上面这个函数)-p 可以设置端口(mitmweb类似fiddler)

下面接着就是要搞定appium你可以理解为就是selenium。
这里需要安装安卓SDK[提取码r446]传送门
这个安装比较繁琐,下载完后打开sdk在这里插入图片描述
选择option设置如下mirrors.neusoft.edu.cn
同时选择这个需要全选安装过程很慢,大概有23个包
继续安装就好了,安装会比较慢。安装完后配置环境即可,这个大家百度一下。
插入安卓手机,打开开发者模式,选择usb调试
cmd 里面输入adb devices 能看到连接的当前手机

from appium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
import logging
logging.captureWarnings(True)

cap ={
  "platformName": "Android",
  "platformVersion": "7.0",#当前手机系统
  "deviceName": "79BQADRABL9DR",#cmd里面的查看到的手机
  "appPackage": "com.tencent.mm",#微信安卓包
  "appActivity": "com.tencent.mm.ui.LauncherUI",#微信安卓包
  "noReset": True#这个不能漏掉
}
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", cap)#启动app
#定义一个获取当前屏幕尺寸的函数
def get_window(driver):
    x1 = driver.get_window_size()["width"]
    y1 = driver.get_window_size()["height"]
    return (x1,y1)
   

#其余部分就不一一演示,和selenium类似,点击到微信gzh文章列表页面,设置好mitm代理,实现一个一直下滑的动作,即可抓取到gzh全部的文章链接。多线程应该也可以,目前测试其他app没问题,微信一直有小bug,有知道原因的朋友分享下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章