querylist采集微信公众号文章(Python微信公众号文章文章爬取的示例代码一.思路)
优采云 发布时间: 2022-01-13 16:12querylist采集微信公众号文章(Python微信公众号文章文章爬取的示例代码一.思路)
Python微信公众号文章爬取示例代码
一.想法
我们通过微信公众平台网页版图文消息中的超链接获取我们需要的界面
从界面中我们可以得到对应的微信公众号和所有对应的微信公众号文章。
二.界面分析
获取微信公众号界面:
范围:
行动=search_biz
开始=0
计数=5
query=公众号
token = 每个账户对应的token值
lang=zh_CN
f=json
阿贾克斯=1
请求方法:
得到
所以在这个界面中,我们只需要获取token,查询的是你需要搜索的公众号,登录后可以通过网页链接获取token。
获取公众号对应的文章接口:
范围:
行动=list_ex
开始=0
计数=5
fakeid=MjM5NDAwMTA2MA==
类型=9
查询=
令牌=557131216
lang=zh_CN
f=json
阿贾克斯=1
请求方法:
得到
在这个接口中,我们需要获取的值是上一步的token和fakeid,而这个fakeid可以在第一个接口中获取。这样我们就可以得到微信公众号文章的数据了。
三.实现
第一步:
首先我们需要通过selenium来模拟登录,然后获取cookie和对应的token
def weChat_login(user, password):
post = {}
browser = webdriver.Chrome()
browser.get('https://mp.weixin.qq.com/')
sleep(3)
browser.delete_all_cookies()
sleep(2)
# 点击切换到账号密码输入
browser.find_element_by_xpath("//a[@class='login__type__container__select-type']").click()
sleep(2)
# 模拟用户点击
input_user = browser.find_element_by_xpath("//input[@name='account']")
input_user.send_keys(user)
input_password = browser.find_element_by_xpath("//input[@name='password']")
input_password.send_keys(password)
sleep(2)
# 点击登录
browser.find_element_by_xpath("//a[@class='btn_login']").click()
sleep(2)
# 微信登录验证
print('请扫描二维码')
sleep(20)
# 刷新当前网页
browser.get('https://mp.weixin.qq.com/')
sleep(5)
# 获取当前网页链接
url = browser.current_url
# 获取当前cookie
cookies = browser.get_cookies()
for item in cookies:
post[item['name']] = item['value']
# 转换为字符串
cookie_str = json.dumps(post)
# 存储到本地
with open('cookie.txt', 'w+', encoding='utf-8') as f:
f.write(cookie_str)
print('cookie保存到本地成功')
# 对当前网页链接进行切片,获取到token
paramList = url.strip().split('?')[1].split('&')
# 定义一个字典存储数据
paramdict = {}
for item in paramList:
paramdict[item.split('=')[0]] = item.split('=')[1]
# 返回token
return paramdict['token']
定义了一个登录方法,其中的参数是登录账号和密码,然后定义了一个字典来存储cookie的值。模拟用户输入对应的账号密码,点击登录,会出现扫码验证,登录微信即可扫码。
刷新当前网页后,获取当前cookie和token并返回。
第2步:
1.请求获取对应的公众号接口,获取我们需要的fakeid
url = 'https://mp.weixin.qq.com'
headers = {
'HOST': 'mp.weixin.qq.com',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36 Edg/86.0.622.63'
}
with open('cookie.txt', 'r', encoding='utf-8') as f:
cookie = f.read()
cookies = json.loads(cookie)
resp = requests.get(url=url, headers=headers, cookies=cookies)
search_url = 'https://mp.weixin.qq.com/cgi-bin/searchbiz?'
params = {
'action': 'search_biz',
'begin': '0',
'count': '5',
'query': '搜索的公众号名称',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1'
}
search_resp = requests.get(url=search_url, cookies=cookies, headers=headers, params=params)
传入我们获取的token和cookie,然后通过requests.get请求获取微信公众号返回的json数据
lists = search_resp.json().get('list')[0]
通过以上代码可以获取对应的公众号数据
fakeid = lists.get('fakeid')
通过上面的代码,可以得到对应的 fakeid
2.请求访问微信公众号文章接口,获取我们需要的文章数据
appmsg_url = 'https://mp.weixin.qq.com/cgi-bin/appmsg?'
params_data = {
'action': 'list_ex',
'begin': '0',
'count': '5',
'fakeid': fakeid,
'type': '9',
'query': '',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1'
}
appmsg_resp = requests.get(url=appmsg_url, cookies=cookies, headers=headers, params=params_data)
我们传入 fakeid 和 token 然后调用 requests.get 请求接口获取返回的 json 数据。
我们实现了微信公众号文章的爬取。
四.总结
通过爬取微信公众号文章,需要掌握selenium和requests的用法,以及如何获取request接口。但是需要注意的是,我们在循环获取文章的时候,一定要设置延迟时间,否则容易被封号,获取不到返回的数据。
至此,这篇关于Python微信公众号文章爬取示例代码的文章文章就介绍到这里了。更多相关Python微信公众号文章爬取内容,请搜索我们之前的文章或继续浏览下方相关文章,希望大家以后多多支持!
时间:2020-11-27
基于Python采集爬取微信公众号历史数据
鲲之鹏技术人员将在本文中通过模拟微信App的操作,介绍一种采集指定公众号所有历史数据的方法。通过我们的抓包分析,我们发现微信公众号的历史数据是通过HTTP协议加载的,对应的API接口如下图所示,关键参数有四个(__biz.appmsg_token.pass_ticket和饼干)。为了获取这四个参数,我们需要模拟运行App,让它生成这些参数,然后我们抓包获取。对于模拟App操作,我们之前已经介绍过通过Python模拟Android App的方法(详见详情)。
python爬取微信公众号文章的方法
最近在学习Python3网络爬虫(崔庆才写的)的开发实践,刚刚得知他在这里使用代理爬取了公众号文章,但是根据他的代码,还是出现了一些问题。我在这里用过这本书。对本书前面提到的一些内容进行了改进。(作者半年前写的这段代码,腾讯的网站半年前更新了)我直接加下面代码:TIMEOUT = 20 from requests import Request, Session, PreparedRequest import requests from selenium import webdrive
Python如何爬取微信公众号文章及评论(基于Fiddler抓包分析)
背景描述我觉得微信公众号是比较难爬的平台之一,但是经过一番折腾,还是有一点小收获。没用Scrapy(估计爬太快有防爬限制),不过后面会开始整理写一些实战。. 简单介绍一下本次的开发环境:python3请求psycopg2(操作postgres数据库)抓包分析本次实战对公众号的抓包没有限制,但是每次抓包前都要对不同的公众号进行分析。打开Fiddler,在手机上配置相关代理。为了避免过多干扰,这里给Fiddler一个过滤规则,指定微信域名即可:
python selenium爬取微信公众号文章代码详解
参考:selenium webdriver 添加cookies: 需求:想看微信公众号文章的历史,但是每次都找地方不方便。思路:1.使用selenium打开微信公众号历史文章,滚动刷新到底部,获取所有历史文章url。2.遍历 url 并下载到本地。实现1.打开微信客户端,点击A微信公众号->进入公众号->打开历史文章链接(用浏览器打开),通过开发者工具获取cookie
Python爬取指定微信公众号文章
本文示例分享了python爬取微信公众号文章的具体代码,供大家参考。具体内容如下。该方法是依靠 urllib2 库完成的。首先需要安装你的python环境,然后安装urllib2库程序的启动方法(返回值为公众号文章的列表): def openUrl(): print("启动爬虫,打开搜狗搜索微信界面") # 加载页面url = ';s_from=input&query = 被抓取的公众号名称
Python爬取微信公众号文章
本文示例分享python爬取微信公众号文章的具体代码供大家参考,具体内容如下# -*- coding: utf-8 -*- import requests from bs4 import BeautifulSoup from requests .exceptions import RequestException import time import random import MySQLdb import threading import socket import math soc
Python爬虫_微信公众号推送信息爬取示例
问题描述 使用搜狗微信搜索抓取指定公众号的最新推送,并将对应网页保存到本地。注意,搜狗微信获取的地址是临时链接,具有时效性。公众号为动态网页(JavaScript渲染),使用requests.get()获取的内容不收录推送消息。这里使用 selenium+PhantomJS 处理代码#!/usr/bin/env python3 from selenium import webdriver from datetime import datetime import bs4, requ
Python使用webdriver爬取微信公众号
本文示例分享了python使用webdriver爬取微信公众号的具体代码,供大家参考。具体内容如下# -*- 编码:utf-8 -*- from selenium import webdriver import time import json import requests import re import random #微信公众号user="" #公众号密码password="" #设置需要爬取的公众号列表 gzlist=['香河微服务
Python抓取微信公众号账号信息的方法
搜狗微信搜索提供了两种关键词搜索,一种是搜索公众号文章的内容,另一种是直接搜索微信公众号。公众号基本信息可通过微信公众号搜索获取。还有最近发布的10个文章,今天就来抢微信公众号的账号信息爬虫吧。首先通过首页进入,可以按类别抓取,通过“查看更多”可以找到页面链接规则: import requests as req import re reTypes = r'id="pc_\d*" uigs=" (pc_\d*)">([\s\S]*?)&
一种使用python itchat包爬取微信好友头像形成矩形头像集的方法
初学者学python,一定要干点有趣的事!让我们从微信开始吧!头像采集示例如下: 可以发朋友圈开始鉴定大赛哈哈~ 废话不多说,直接上代码,我写了很多评论,大家应该都能看懂 import itchat import os import PIL .Image as Image from os import listdir import math import sys print("请进入查询模式:0-显示所有好友头像,但最终矩形头像集的最后一行可能不完整:1-头像集是一个完整的矩形,但朋友可能不完整,即在0模式下被丢弃
微信公众号Java批量获取方法详解
最近需要爬取微信公众号的文章信息。网上搜了一下,发现微信公众号爬取的难点在于公众号文章的链接在PC端打不开,所以用微信自带的浏览器(只能在PC端打开)得到微信客户端补充的参数后的其他平台),给爬虫带来了很大的麻烦。后来看到一个大牛在知乎上用php写的微信公众号爬取程序按照大佬的思路整理成java。改造过程中有很多细节问题,我就分享一下。系统的基本思路是在安卓模拟器上运行微信,模拟器设置代理,通过代理服务器截取微信数据,并将获取的数据发送给自己的程序进行处理。准备环境:node