querylist采集微信公眾號文章(Python微信公眾號文章文章爬取的示例代碼一.思路)
優(yōu)采云 發(fā)布時(shí)間: 2022-01-13 16:12querylist采集微信公眾號文章(Python微信公眾號文章文章爬取的示例代碼一.思路)
Python微信公眾號文章爬取示例代碼
一.想法
我們通過(guò)微信公眾平臺網(wǎng)頁(yè)版圖文消息中的超鏈接獲取我們需要的界面
從界面中我們可以得到對應的微信公眾號和所有對應的微信公眾號文章。
二.界面分析
獲取微信公眾號界面:
范圍:
行動(dòng)=search_biz
開(kāi)始=0
計數=5
query=公眾號
token = 每個(gè)賬戶(hù)對應的token值
lang=zh_CN
f=json
阿賈克斯=1
請求方法:
得到
所以在這個(gè)界面中,我們只需要獲取token,查詢(xún)的是你需要搜索的公眾號,登錄后可以通過(guò)網(wǎng)頁(yè)鏈接獲取token。
獲取公眾號對應的文章接口:
范圍:
行動(dòng)=list_ex
開(kāi)始=0
計數=5
fakeid=MjM5NDAwMTA2MA==
類(lèi)型=9
查詢(xún)=
令牌=557131216
lang=zh_CN
f=json
阿賈克斯=1
請求方法:
得到
在這個(gè)接口中,我們需要獲取的值是上一步的token和fakeid,而這個(gè)fakeid可以在第一個(gè)接口中獲取。這樣我們就可以得到微信公眾號文章的數據了。
三.實(shí)現
第一步:
首先我們需要通過(guò)selenium來(lái)模擬登錄,然后獲取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)
# 點(diǎn)擊切換到賬號密碼輸入
browser.find_element_by_xpath("//a[@class='login__type__container__select-type']").click()
sleep(2)
# 模擬用戶(hù)點(diǎn)擊
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)
# 點(diǎn)擊登錄
browser.find_element_by_xpath("//a[@class='btn_login']").click()
sleep(2)
# 微信登錄驗證
print('請掃描二維碼')
sleep(20)
# 刷新當前網(wǎng)頁(yè)
browser.get('https://mp.weixin.qq.com/')
sleep(5)
# 獲取當前網(wǎng)頁(yè)鏈接
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保存到本地成功')
# 對當前網(wǎng)頁(yè)鏈接進(jìn)行切片,獲取到token
paramList = url.strip().split('?')[1].split('&')
# 定義一個(gè)字典存儲數據
paramdict = {}
for item in paramList:
paramdict[item.split('=')[0]] = item.split('=')[1]
# 返回token
return paramdict['token']
定義了一個(gè)登錄方法,其中的參數是登錄賬號和密碼,然后定義了一個(gè)字典來(lái)存儲cookie的值。模擬用戶(hù)輸入對應的賬號密碼,點(diǎn)擊登錄,會(huì )出現掃碼驗證,登錄微信即可掃碼。
刷新當前網(wǎng)頁(yè)后,獲取當前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': '搜索的公眾號名稱(chēng)',
'token': token,
'lang': 'zh_CN',
'f': 'json',
'ajax': '1'
}
search_resp = requests.get(url=search_url, cookies=cookies, headers=headers, params=params)
傳入我們獲取的token和cookie,然后通過(guò)requests.get請求獲取微信公眾號返回的json數據
lists = search_resp.json().get('list')[0]
通過(guò)以上代碼可以獲取對應的公眾號數據
fakeid = lists.get('fakeid')
通過(guò)上面的代碼,可以得到對應的 fakeid
2.請求訪(fǎng)問(wèn)微信公眾號文章接口,獲取我們需要的文章數據
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 數據。
我們實(shí)現了微信公眾號文章的爬取。
四.總結
通過(guò)爬取微信公眾號文章,需要掌握selenium和requests的用法,以及如何獲取request接口。但是需要注意的是,我們在循環(huán)獲取文章的時(shí)候,一定要設置延遲時(shí)間,否則容易被封號,獲取不到返回的數據。
至此,這篇關(guān)于Python微信公眾號文章爬取示例代碼的文章文章就介紹到這里了。更多相關(guān)Python微信公眾號文章爬取內容,請搜索我們之前的文章或繼續瀏覽下方相關(guān)文章,希望大家以后多多支持!
時(shí)間:2020-11-27
基于Python采集爬取微信公眾號歷史數據
鯤之鵬技術(shù)人員將在本文中通過(guò)模擬微信App的操作,介紹一種采集指定公眾號所有歷史數據的方法。通過(guò)我們的抓包分析,我們發(fā)現微信公眾號的歷史數據是通過(guò)HTTP協(xié)議加載的,對應的API接口如下圖所示,關(guān)鍵參數有四個(gè)(__biz.appmsg_token.pass_ticket和餅干)。為了獲取這四個(gè)參數,我們需要模擬運行App,讓它生成這些參數,然后我們抓包獲取。對于模擬App操作,我們之前已經(jīng)介紹過(guò)通過(guò)Python模擬Android App的方法(詳見(jiàn)詳情)。
python爬取微信公眾號文章的方法
最近在學(xué)習Python3網(wǎng)絡(luò )爬蟲(chóng)(崔慶才寫(xiě)的)的開(kāi)發(fā)實(shí)踐,剛剛得知他在這里使用代理爬取了公眾號文章,但是根據他的代碼,還是出現了一些問(wèn)題。我在這里用過(guò)這本書(shū)。對本書(shū)前面提到的一些內容進(jìn)行了改進(jìn)。(作者半年前寫(xiě)的這段代碼,騰訊的網(wǎng)站半年前更新了)我直接加下面代碼:TIMEOUT = 20 from requests import Request, Session, PreparedRequest import requests from selenium import webdrive
Python如何爬取微信公眾號文章及評論(基于Fiddler抓包分析)
背景描述我覺(jué)得微信公眾號是比較難爬的平臺之一,但是經(jīng)過(guò)一番折騰,還是有一點(diǎn)小收獲。沒(méi)用Scrapy(估計爬太快有防爬限制),不過(guò)后面會(huì )開(kāi)始整理寫(xiě)一些實(shí)戰。. 簡(jiǎn)單介紹一下本次的開(kāi)發(fā)環(huán)境:python3請求psycopg2(操作postgres數據庫)抓包分析本次實(shí)戰對公眾號的抓包沒(méi)有限制,但是每次抓包前都要對不同的公眾號進(jìn)行分析。打開(kāi)Fiddler,在手機上配置相關(guān)代理。為了避免過(guò)多干擾,這里給Fiddler一個(gè)過(guò)濾規則,指定微信域名即可:
python selenium爬取微信公眾號文章代碼詳解
參考:selenium webdriver 添加cookies: 需求:想看微信公眾號文章的歷史,但是每次都找地方不方便。思路:1.使用selenium打開(kāi)微信公眾號歷史文章,滾動(dòng)刷新到底部,獲取所有歷史文章url。2.遍歷 url 并下載到本地。實(shí)現1.打開(kāi)微信客戶(hù)端,點(diǎn)擊A微信公眾號->進(jìn)入公眾號->打開(kāi)歷史文章鏈接(用瀏覽器打開(kāi)),通過(guò)開(kāi)發(fā)者工具獲取cookie
Python爬取指定微信公眾號文章
本文示例分享了python爬取微信公眾號文章的具體代碼,供大家參考。具體內容如下。該方法是依靠 urllib2 庫完成的。首先需要安裝你的python環(huán)境,然后安裝urllib2庫程序的啟動(dòng)方法(返回值為公眾號文章的列表): def openUrl(): print("啟動(dòng)爬蟲(chóng),打開(kāi)搜狗搜索微信界面") # 加載頁(yè)面url = ';s_from=input&query = 被抓取的公眾號名稱(chēng)
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爬蟲(chóng)_微信公眾號推送信息爬取示例
問(wèn)題描述 使用搜狗微信搜索抓取指定公眾號的最新推送,并將對應網(wǎng)頁(yè)保存到本地。注意,搜狗微信獲取的地址是臨時(shí)鏈接,具有時(shí)效性。公眾號為動(dòng)態(tài)網(wǎng)頁(yè)(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=['香河微服務(wù)
Python抓取微信公眾號賬號信息的方法
搜狗微信搜索提供了兩種關(guān)鍵詞搜索,一種是搜索公眾號文章的內容,另一種是直接搜索微信公眾號。公眾號基本信息可通過(guò)微信公眾號搜索獲取。還有最近發(fā)布的10個(gè)文章,今天就來(lái)?yè)屛⑿殴娞柕馁~號信息爬蟲(chóng)吧。首先通過(guò)首頁(yè)進(jìn)入,可以按類(lèi)別抓取,通過(guò)“查看更多”可以找到頁(yè)面鏈接規則: import requests as req import re reTypes = r'id="pc_\d*" uigs=" (pc_\d*)">([\s\S]*?)&
一種使用python itchat包爬取微信好友頭像形成矩形頭像集的方法
初學(xué)者學(xué)python,一定要干點(diǎn)有趣的事!讓我們從微信開(kāi)始吧!頭像采集示例如下: 可以發(fā)朋友圈開(kāi)始鑒定大賽哈哈~ 廢話(huà)不多說(shuō),直接上代碼,我寫(xiě)了很多評論,大家應該都能看懂 import itchat import os import PIL .Image as Image from os import listdir import math import sys print("請進(jìn)入查詢(xún)模式:0-顯示所有好友頭像,但最終矩形頭像集的最后一行可能不完整:1-頭像集是一個(gè)完整的矩形,但朋友可能不完整,即在0模式下被丟棄
微信公眾號Java批量獲取方法詳解
最近需要爬取微信公眾號的文章信息。網(wǎng)上搜了一下,發(fā)現微信公眾號爬取的難點(diǎn)在于公眾號文章的鏈接在PC端打不開(kāi),所以用微信自帶的瀏覽器(只能在PC端打開(kāi))得到微信客戶(hù)端補充的參數后的其他平臺),給爬蟲(chóng)帶來(lái)了很大的麻煩。后來(lái)看到一個(gè)大牛在知乎上用php寫(xiě)的微信公眾號爬取程序按照大佬的思路整理成java。改造過(guò)程中有很多細節問(wèn)題,我就分享一下。系統的基本思路是在安卓模擬器上運行微信,模擬器設置代理,通過(guò)代理服務(wù)器截取微信數據,并將獲取的數據發(fā)送給自己的程序進(jìn)行處理。準備環(huán)境:node