各位小夥兒伴兒,一定深受過採集微信公衆號之苦吧!特別是!!!!!!公共號歷史資訊!!!這丫除了通過中間代理採集APP、還真沒什麼招數能拿到數據啊!
直到············
很多人學習python,不知道從何學起。
很多人學習python,掌握了基本語法過後,不知道在哪裏尋找案例上手。
很多已經做案例的人,卻不知道如何去學習更加高深的知識。
那麼針對這三類人,我給大家提供一個好的學習平臺,免費領取視訊教學,電子書籍,以及課程的原始碼!
QQ羣:101677771
大致意思是說以後發佈文章的時候可以直接插入其它公衆號的文章了。
誒媽呀!這不是一直需要的採集介面嘛!嘖嘖 天助我也啊!來來·········下面 下麪大致的說一下方法。
微信公衆號登錄我沒仔細看。
這個暫且不說了,我使用的是selenium 驅動瀏覽器獲取Cookie的方法、來達到登錄的效果。
我大概看了一下、極客學院每一頁大概至少有5條資訊、也就是總文章數/5 就是有多少頁。但是有小數、我們取整,然後加1就是總頁數了。
程式碼如下:
selenium獲取Cookie
Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
from selenium import webdriver import time import json from pprint import pprint
post = {}
driver = webdriver.Chrome(executable_path='C:\chromedriver.exe') driver.get('https://mp.weixin.qq.com/') time.sleep(2) driver.find_element_by_xpath("./*//input[@id='account']").clear() driver.find_element_by_xpath("./*//input[@id='account']").send_keys('你的帳號') driver.find_element_by_xpath("./*//input[@id='pwd']").clear() driver.find_element_by_xpath("./*//input[@id='pwd']").send_keys('你的密碼') # 在自動輸完密碼之後記得點一下記住我 time.sleep(5) driver.find_element_by_xpath("./*//a[@id='loginBt']").click() # 拿手機掃二維條碼! time.sleep(15) driver.get('https://mp.weixin.qq.com/') cookie_items = driver.get_cookies() for cookie_item in cookie_items: post[cookie_item['name']] = cookie_item['value'] cookie_str = json.dumps(post) with open('cookie.txt', 'w+', encoding='utf-8') as f: f.write(cookie_str) |
提取公衆號文章連線
Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
import requests import redis import json import re import random import time
gzlist = ['yq_Butler']
url = 'https://mp.weixin.qq.com' header = { "HOST": "mp.weixin.qq.com", "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0" }
with open('cookie.txt', 'r', encoding='utf-8') as f: cookie = f.read() cookies = json.loads(cookie) response = requests.get(url=url, cookies=cookies) token = re.findall(r'token=(\d+)', str(response.url))[0] for query in gzlist: query_id = { 'action': 'search_biz', 'token' : token, 'lang': 'zh_CN', 'f': 'json', 'ajax': '1', 'random': random.random(), 'query': query, 'begin': '0', 'count': '5', } search_url = 'https://mp.weixin.qq.com/cgi-bin/searchbiz?' search_response = requests.get(search_url, cookies=cookies, headers=header, params=query_id) lists = search_response.json().get('list')[0] fakeid = lists.get('fakeid') query_id_data = { 'token': token, 'lang': 'zh_CN', 'f': 'json', 'ajax': '1', 'random': random.random(), 'action': 'list_ex', 'begin': '0', 'count': '5', 'query': '', 'fakeid': fakeid, 'type': '9' } appmsg_url = 'https://mp.weixin.qq.com/cgi-bin/appmsg?' appmsg_response = requests.get(appmsg_url, cookies=cookies, headers=header, params=query_id_data) max_num = appmsg_response.json().get('app_msg_cnt') num = int(int(max_num) / 5) begin = 0 while num + 1 > 0 : query_id_data = { 'token': token, 'lang': 'zh_CN', 'f': 'json', 'ajax': '1', 'random': random.random(), 'action': 'list_ex', 'begin': '{}'.format(str(begin)), 'count': '5', 'query': '', 'fakeid': fakeid, 'type': '9' } print('翻頁###################',begin) query_fakeid_response = requests.get(appmsg_url, cookies=cookies, headers=header, params=query_id_data) fakeid_list = query_fakeid_response.json().get('app_msg_list') for item in fakeid_list: print(item.get('link')) num -= 1 begin = int(begin) begin+=5 time.sleep(2) |