获取任何你想爬取的微信公众号文章
本程序通过输入关键字(如优快云)就会获取到所有包含关键字(如优快云)的公众号。在逐一获取所有公众号下所有文章。当然,这只是理想情况,腾讯的反爬不是一般的厉害,他会直接封掉你的账号。而每个账号又直接和微信号挂钩,所以目前我还不知道如何解决。是什么地方和微信号挂钩呢,在登录公众号的时候需要用微信扫描二维码登录。
如果持续爬取,每个账号一次大概会封一个小时左右,每天有几次机会,之后会封24小时。所以多的时候一天大概能爬取几千篇微信文章。当然,我们只是纯粹的技术交流,爬取到的微信文章切不可商用,因为有版权问题。尊重版权是一种进步。
具体微信公众号的入口就用自己的微信公众号作为入口,在发布文章时有个链接功能,那就是入口。具体的描述网上有很多,在此就不详细叙述了。
我的代码对爬取数量进行了限制,每个公众号最多爬取20页文章(可以在代码中改变),为的是能够多爬取一些公众号。
如果你需要持续的爬取某个公众号,在账号被封掉之后,你可以记录下当前爬取到公众号的多少页,以及某个公众号文章的多少页。下次直接在代码中改为该页数就能持续爬取了。
不多说了,更多具体的细节,都在代码中了。
我保证 慢慢看懂以下的代码,对爬取微信公众号 一定不会让你失望的。
#获取微信公众号,进行整站爬取
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
import time
import json
import requests
import re
import random
from pyquery import PyQuery
from requests import RequestException
import csv
wechat_url = "https://mp.weixin.qq.com/" #公众号主页
account = "***************" #请使用自己的微信公众号登录账户
password = "***************" #请使用自己的微信公众号登录密码
wechat_official_url = "https://mp.weixin.qq.com/cgi-bin/searchbiz?" #公众号搜索页面,获取公众号列表
header = {
"Host": "mp.weixin.qq.com",
"User - Agent": "Mozilla / 5.0(WindowsNT10.0;WOW64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 71.0.3578.98Safari / 537.36"
}
article_url = "https://mp.weixin.qq.com/cgi-bin/appmsg?" #文章页面,获取文章列表
data_count = 1
ip_pool=list()
proxy_ip=None
#读取代理IP,获得所有Ip
def get_ip_pool():
with open("proxy_ip.txt","r",encoding="utf-8") as f:
content = f.readlines()
for i in range(len(content)):
content[i] = content[i].rstrip("\n").replace('\"', "")
ip_pool.append(content[i])
#获取代理Ip
def get_proxy_ip():
global proxy_ip
proxy_ip = ip_pool[random.randint(0,len(ip_pool)-1)]
#打开微信公众号主页面,登录微信公众号
#获取cookie信息
def open_wechat_official():
browser = webdriver.Chrome()
wait = WebDriverWait(browser, 2)
try:
post = {}
browser.get(wechat_url