python 爬取公众号文章

注意事项
1.需要安装Python selenium模块包,通过selenium中的webdriver驱动浏览器获取Cookie的方法、来达到登录的效果;
2.使用webdriver功能需要安装对应浏览器的驱动插件,我这里测试用的是谷歌浏览器:
google chrome版本为52.0.2743.6 ;
chromedriver版本为:V2.23
注意:谷歌浏览器版本和chromedriver需要对应,否则会导致启动时报错。【附:selenium之 chromedriver与chrome版本映射表(更新至v2.30) http://blog.csdn.net/huilan_same/article/details/51896672)】
3.微信公众号登陆地址: https://mp.weixin.qq.com/

4.微信公众号文章接口地址可以在微信公众号后台中新建图文消息,超链接功能中获取(F12进入浏览器开发工具)

5.搜索公众号名称

搜索可以获取所有相关的公众号信息,不过我这里只取第一个做测试,其他的有兴趣的也可以全部获取。

6.获取要爬取的公众号的fakeid

7.选定要爬取的公众号,获取文章接口地址

8.文章列表翻页及内容获取

完整代码

login.py

# -*- coding:utf-8 -*-

from selenium import webdriver
import time
import json

driver = webdriver.Chrome() #需要一个谷歌驱动
driver.get('https://mp.weixin.qq.com/')
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(2)
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(2)
driver.find_element_by_xpath('//*[@id="header"]/div[2]/div/div/form/div[3]/label').click()
time.sleep(2)
driver.find_element_by_xpath('//*[@id="header"]/div[2]/div/div/form/div[4]/a').click()

time.sleep(15)
cookies = driver.get_cookies()  #获取登录之后的cookies

print cookies
cookie = {}
for items in cookies:
    cookie[items.get('name')] = items.get('value')
with open('cookies.txt','w') as file:
    file.write(json.dumps(cookie))#写入转成字符串的字典
driver.close()


weixin.py

# -*- coding:utf-8 -*-

import requests
import json
import re
import random
import time

query = 'java'
with open('cookies.txt','r') as file:
    cookie = file.read()

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

headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.104 Safari/537.36',
'Referer':'https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit_v2&action=edit&isNew=1&share=1&type=10&lang=zh_CN&token=1066113728',
'Host':'mp.weixin.qq.com',
}
cookies = json.loads(cookie)
# print cookies
response = requests.get(url,cookies = cookies)
token = re.findall(r'token=(\d+)', str(response.url))[0]

data = {
    'token':token,
    'lang':'zh_CN',
    'f':'json',
    'ajax':'1',
    'random':random.random(),
    'url':query,
    'begin':'0',
    'count':'3',
}
search_url = 'https://mp.weixin.qq.com/cgi-bin/operate_appmsg?sub=check_appmsg_copyright_stat'
search_response = requests.post(search_url,cookies=cookies,data=data,headers=headers)
max_num = search_response.json().get('total') #获取所有文章的条数
num = int(int(max_num/3))
begin = 0
while num +1 >0:
    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)
    content = search_response.json().get('list')

    for items in content:
        print items.get('title') #标题
        print items.get('url') #文章的url
    num-=1
    begin = int(begin)
    begin+=3
    time.sleep(5)

# if __name__ == '__main__':
#     query = raw_input('请输入你要搜索的文章')
#     main()



视频:http://www.bilibili.com/video/av11127609/


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python可以用于爬取微信公众号文章。有几种方式可以实现这一目标,其中一种方式是通过登录微信公众号平台,在里面搜索要爬取公众号,然后进行抓包。另外一种方式是使用安卓模拟器进行抓包。还可以使用搜狗的微信模块来获取数据。 在使用第一种方式时,首先需要拥有一个微信公众号的账号。然后,通过工具如pycharm和fiddler等,登录微信公众号平台,进入创作管理,选择图文素材,然后创建或编辑文章。最后,通过添加引用和查找公众号文章等步骤,进行数据的爬取和收集。 在实现这些步骤之前,你需要了解微信公众号平台的主要功能和界面布局。主面板可以划分为七大块,每个块都有不同的功能。在后续的操作中,你可以使用Python代码来模拟微信请求,并实现数据的爬取和分析。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [欢度国庆⭐️共享爬虫之美⭐️基于 Python 实现微信公众号爬虫(Python无所不能爬)](https://blog.csdn.net/xiejiachao/article/details/120573509)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [【爬虫】python爬取微信公众号](https://blog.csdn.net/qq_36269293/article/details/109244944)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值