91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用python3抓取微信公眾號文章,了解一下?

發布時間:2020-02-29 23:21:13 來源:網絡 閱讀:5142 作者:H_Fer 欄目:編程語言
通過微信公眾平臺的查找文章接口,抓取我們需要的相關文章
1.首先我們先看一下,通過正常的登錄自己的微信公眾號,然后用文章搜索功能,搜索一下我們需要查找的相關文章。
  • 打開https://mp.weixin.qq.com
  • 登錄公眾號,打開素材管理,點擊新建分享圖文
    如何使用python3抓取微信公眾號文章,了解一下?
  • 打開一個文章搜索接口
    如何使用python3抓取微信公眾號文章,了解一下?
  • 輸入要搜索的內容后,可以搜索到相關文章的標題、出自哪個公眾號等信息。
2.實現思路
  • 這里有一個問題,打開微信公眾平臺首頁,輸入賬號密碼后需要使用管理的微信號掃碼確認一下才能最終成功登錄微信公眾號,這個要怎么解決呢?

  • 我們可以第一次登錄的時候按正常的流程輸入賬號密碼,掃碼登錄,拿到cookies,保存下來以便后面調用這個cookies來驗證登錄;當然cookies是有失效時間的,但是我在測試的時候好像過了3-4個小時還能用,夠做好多事情了。

  • 基本思路:1.通過selenium驅動瀏覽器 打開登錄頁面 ,輸入賬號密碼登錄 ,獲取登錄后的cookies,保存cookies以便調用;2.拿到cookies之后 ,去請求首頁 登錄后直接跳轉到個人首頁,打開文章搜索框,找一些需要的信息;3.拿到有用的信息后,構造data數據包 ,模擬post請求, 然后返回數據,拿到數據之后 ,解析出我們需要的數據。
3.獲取cookies,話不多說,貼個代碼
#!/usr/bin/env python
# _*_ coding: utf-8 _*_
from selenium import webdriver
import time
import json
driver = webdriver.Chrome()    #需要一個谷歌驅動chromedriver.exe,要支持你當前谷歌瀏覽器的版本
driver.get('https://mp.weixin.qq.com/')     #發起get請求打開微信公眾號平臺登錄頁面,然后輸入賬號密碼登錄微信公眾號

driver.find_element_by_xpath('//*[@id="header"]/div[2]/div/div/form/div[1]/div[1]/div/span/input').clear()    #定位到賬號輸入框,清除里面的內容
driver.find_element_by_xpath('//*[@id="header"]/div[2]/div/div/form/div[1]/div[1]/div/span/input').send_keys('這里輸入你的賬號')   #定位到賬號輸入框,輸入賬號
time.sleep(3)     #等待3秒后執行下一步操作,避免因為網絡延遲,瀏覽器來不及加載出輸入框,從而導致以下的操作失敗
driver.find_element_by_xpath('//*[@id="header"]/div[2]/div/div/form/div[1]/div[2]/div/span/input').clear()   #定位到密碼輸入框,清除里面的內容
driver.find_element_by_xpath('//*[@id="header"]/div[2]/div/div/form/div[1]/div[2]/div/span/input').send_keys('這里輸入你的密碼')   #定位到密碼輸入框,輸入密碼
time.sleep(3)     #原因和以上相同
driver.find_element_by_xpath('//*[@id="header"]/div[2]/div/div/form/div[3]/label').click()   #點擊記住密碼
time.sleep(3)     #原因和以上相同
driver.find_element_by_xpath('//*[@id="header"]/div[2]/div/div/form/div[4]/a').click()   #點擊登錄

time.sleep(15)    #15秒內掃碼登錄
cookies = driver.get_cookies()  #獲取掃碼登錄成功之后的cookies
print(cookies)       #打印出來看看,如果超時了還不掃碼,獲取到的cookies是不完整的,不能用來登錄公眾號,所以第一次必須掃碼登錄以獲取完整的cookies
cookie = {}      #定義一個空字典,以便把獲取的cookies以字典的形式寫入

for items in cookies:             #把登錄成功后獲取的cookies提取name和value參數寫入空字典cookie
    cookie[items.get('name')] = items.get('value')

with open('cookies.txt','w') as file:          #新建并打開一個cookies.txt文件
    file.write(json.dumps(cookie))  #寫入轉成字符串的字典

driver.close()      #關閉瀏覽器
4.新建一個py文件,代碼如下
#!/usr/bin/env python
# _*_ coding: utf-8 _*_
import requests
import json
import re       #正則模塊
import random   #隨機數模塊
import time

#query = 'python'
#讀取之前登錄后保存的cookies
with open('cookies.txt','r') as file:
    cookie = file.read()

url = 'https://mp.weixin.qq.com/'

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36',
    'Referer': 'https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit_v2&action=edit&isNew=1&type=10&share=1&token=773059916&lang=zh_CN',
    'Host': 'mp.weixin.qq.com',
}

cookies = json.loads(cookie)    #加載之前獲取的cookies
print(cookies)     #可以打印看看,和之前保存的cookies是一樣的

response = requests.get(url, cookies = cookies)    #請求https://mp.weixin.qq.com/,傳cookies參數,登錄成功
token = re.findall(r'token=(\d+)',str(response.url))[0]    #登錄成功后,這是的url里是包含token的,要把token參數拿出來,方便后面構造data數據包發起post請求
#print(token)
#random.random()返回0到1之間隨機數
#構造data數據包發起post請求
data = {
    'token': token,
    'lang': 'zh_CN',
    'f': 'json',
    'ajax': '1',
    'random': random.random(),
    'url': 'python',
    'begin': '0',
    'count': '3',
}

search_url = 'https://mp.weixin.qq.com/cgi-bin/operate_appmsg?sub=check_appmsg_copyright_stat'      #按F12在瀏覽器里找post請求的url(搜索文章請求的url)
search_response = requests.post(search_url, cookies=cookies, data=data, headers=headers)     #發起post請求,傳cookies、data、headers參數
max_num = search_response.json().get('total')   #獲取所有文章的條數
num = int(int(max_num/3)) #每頁顯示3篇文章,要翻total/3頁,不過實際上我搜索了幾個關鍵詞,發現微信公眾號文章搜索的接口最多顯示667頁,其實后面還有頁數,max_num/3的結果大于667沒關系

if __name__ == '__main__':
    query = input('請輸入你要搜索的內容:')
begin = 0
while num +1 > 0:
    print(begin)
    data = {
        'token': token,
        'lang': 'zh_CN',
        'f': 'json',
        'ajax': '1',
        'random': random.random(),
        'url': query,
        'begin': '{}'.format(str(begin)),
        'count': '3',
    }

    search_response = requests.post(search_url, cookies=cookies, data=data, headers=headers)

    contentt = search_response.json().get('list')               #list里面是我們需要的內容,所以要獲取list

    for items in contentt:                                       #具體需要list里面的哪些參數可以自己選擇,這里只獲取title、url、nickname、author
        f = open('search.txt',mode='a',)                             #打開一個txt文檔,把獲取的內容寫進去,mode='a'是追加的方式寫入,不覆蓋
        print('文章標題:',items.get('title'))  #獲取文章標題
        f.write('文章標題:')
        f.write(items.get('title'))
        f.write("\n")
        f.write('文章url:')
        f.write(items.get('url'))
        f.write("\n")
        f.write('公眾號:')
        f.write(items.get('nickname'))
        f.write("\n")
        f.write('作者:')
        f.write(items.get('author'))
        f.write("\n")
        f.write("\n")
        print('文章url:',items.get('url'))    #獲取文章的url
        print('公眾號:',items.get('nickname'))  #獲取出自哪個微信公眾號
        print('文章作者:',items.get('author'))   #獲取文章作者

    num -= 1
    begin = int(begin)
    begin += 3
    time.sleep(3)
  • 運行結果如下:

如何使用python3抓取微信公眾號文章,了解一下?
如何使用python3抓取微信公眾號文章,了解一下?

  • search.txt里保存的內容如下:

如何使用python3抓取微信公眾號文章,了解一下?

  • 只要有一個微信公眾號就可以實現,可以注冊一個試一試。
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

临漳县| 侯马市| 高平市| 恩施市| 历史| 个旧市| 双柏县| 苏州市| 达拉特旗| 木里| 茌平县| 思南县| 阿巴嘎旗| 金华市| 凤山市| 七台河市| 靖边县| 和田市| 临漳县| 孙吴县| 新民市| 汤原县| 循化| 宽城| 阿鲁科尔沁旗| 玉林市| 仁化县| 上饶县| 抚远县| 桦甸市| 兴海县| 武冈市| 东阳市| 柯坪县| 永城市| 大同市| 年辖:市辖区| 甘洛县| 阿拉善右旗| 拜泉县| 宣汉县|