zoukankan      html  css  js  c++  java
  • python爬虫公众号所有信息,并批量下载公众号视频

    前言

    本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

    作者: 数据分析实战

    PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

    http://note.youdao.com/noteshare?id=3054cce4add8a909e784ad934f956cef

    主要功能

    • 如何简单爬虫微信公众号

    • 获取信息:标题、摘要、封面、文章地址

    • 自动批量下载公众号内的视频

    一、获取公众号信息:标题、摘要、封面、文章URL

    操作步骤:

    1、先自己申请一个公众号 2、登录自己的账号,新建文章图文,点击超链接

    代码

     1 import re
     2  3 import requests
     4 import jsonpath
     5 import json
     6  7 headers = {
     8 "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36",
     9 "Host": "mp.weixin.qq.com",
    10 "Referer": "https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit&action=edit&type=10&isMul=1&isNew=1&lang=zh_CN&token=1862390040",
    11 "Cookie": "自己获取信息时的cookie"
    12        }
    13 14 def getInfo():
    15     for i in range(80):
    16         # token  random 需要要自己的   begin:参数传入
    17         url = "https://mp.weixin.qq.com/cgi-bin/appmsg?token=1904193044&lang=zh_CN&f=json&ajax=1&random=0.9468236563826882&action=list_ex&begin={}&count=5&query=&fakeid=MzI4MzkzMTc3OA%3D%3D&type=9".format(str(i * 5))
    18 19         response = requests.get(url, headers = headers)
    20 21         jsonRes = response.json()
    22 23 24         titleList = jsonpath.jsonpath(jsonRes, "$..title")
    25         coverList = jsonpath.jsonpath(jsonRes, "$..cover")
    26         urlList = jsonpath.jsonpath(jsonRes, "$..link")
    27 28         # 遍历 构造可存储字符串
    29         for index in range(len(titleList)):
    30             title = titleList[index]
    31             cover = coverList[index]
    32             url = urlList[index]
    33 34             scvStr = "%s,%s, %s,
    " % (title, cover, url)
    35             with open("info.csv", "a+", encoding="gbk", newline='') as f:
    36                 f.write(scvStr)

    获取结果(成功):

    在这里插入图片描述

    二、获取文章内视频:实现批量下载

    通过对单篇视频文章分析,我找到了这个链接:

    在这里插入图片描述

    通过网页打开发现,是视频的网页下载链接:

    在这里插入图片描述

    哎,好像有点意思了,找到了视频的网页纯下载链接,那就开始吧。

    发现链接里的有一个关键参数vid 不知道哪来的? 和获取到的其他信息也没有关系,那就只能硬来了。

    通过对单文章的url请求信息里发现了这个参数,然后进行获取。

    1 response = requests.get(url_wxv, headers=headers)
    2 3     # 我用的是正则,也可以使用xpath
    4     jsonRes = response.text  #  匹配:wxv_1105179750743556096
    5     dirRe = r"wxv_.{19}"
    6     result = re.search(dirRe, jsonRes)
    7 8     wxv = result.group(0)
    9     print(wxv)

    视频下载:

     1 def getVideo(video_title, url_wxv):
     2     video_path = './videoFiles/' + video_title + ".mp4"
     3  4     # 页面可下载形式
     5     video_url_temp = "https://mp.weixin.qq.com/mp/videoplayer?action=get_mp_video_play_url&preview=0&__biz=MzI4MzkzMTc3OA==&mid=2247488495&idx=4&vid=" + wxv
     6     response = requests.get(video_url_temp, headers=headers)
     7     content = response.content.decode()
     8     content = json.loads(content)
     9     url_info = content.get("url_info")
    10     video_url2 = url_info[0].get("url")
    11     print(video_url2)
    12 13     # 请求要下载的url地址
    14     html = requests.get(video_url2)
    15     # content返回的是bytes型也就是二进制的数据。
    16     html = html.content
    17     with open(video_path, 'wb') as f:
    18         f.write(html)
    那么所有信息就都完成了,进行code组装。

    a、获取公众号信息

    b、筛选单篇文章信息

    c、获取vid信息

    d、拼接视频页面下载URL

    e、下载视频,保存

    代码实验结果:

    在这里插入图片描述

    在这里插入图片描述

    .

  • 相关阅读:
    Hive 中parse_url的使用
    作为首席架构师,我是如何选择并落地架构方案的?
    漫谈数据仓库之拉链表(原理、设计以及在Hive中的实现)
    纸上得来终觉浅
    年薪50万的大数据分析师养成记【摘抄】
    如果有人问你数据库的原理,叫他看这篇文章(完)
    开源大数据引擎:Greenplum 数据库架构分析
    【阿里在线技术峰会】李金波:企业大数据平台仓库架构建设思路
    ETL Automation完整安装方法_(元数据存放在mysql数据库)
    js定时器 离开当前页面任然执行的问题
  • 原文地址:https://www.cnblogs.com/Qqun821460695/p/12016306.html
Copyright © 2011-2022 走看看