最新公告
  • 欢迎光临icbug创客,本站所有的文章全部开放!部分资源需付费!立即加入我们会员
  • 【电脑版本】小伙伴们期待已久的抖音爬虫来啦!

    本文缺点:无法去水印对视频进行下载

    准备材料:

    • Google Chrome

    • 夜神模拟器

    启动夜神模拟器:

    文章地址:

    https://icbugblog.cn/cid=101/

    如下图:

    image-20200605175229144

    然后我们去官网下载一个抖音

    https://www.douyin.com/

    image-20200605180152588

    点击安装

    image-20200605180217140

    image-20200605180308004

    正常使用

    image-20200605180338051

    首先我们选择一个作者打开它的主页面

    例如

    image-20200605180712771

    我们这样操作

    image-20200605180733557

    image-20200605180748772

    得到的链接如下

    https://v.douyin.com/JeyHvTm/

    我们回来用Chrome打开

    如下图

    我们可以看到一个重定向的链接

    image-20200605180835854

    https://www.iesdouyin.com/share/user/104997217592?sec_uid=MS4wLjABAAAAYXYEhhUJ6b0qkg4P7pvp2Ea7VSLXYAbRtSiHTFEDvls&timestamp=1591351656&utm_source=copy&utm_campaign=client_share&utm_medium=android&share_app_name=douyin

    然后这个页面作为初始获取数据的页面,那么下一步就是获取我们的小饰品

    如果你直接再我们刚才的Chrome页面端上始终会让你下载这个抖音软件

    跳转回

    image-20200605181154514

    然后我们这里还是需要模拟器,来获取我们的视频链接

    image-20200605181316387

    找到复制链接

    点击复制

    得到内容如下

    来自美术教室的惊喜(下续)#这个视频有点料 https://v.douyin.com/JeyxNYP/ 复制此链接,打开【抖音短视频】,直接观看视频!

    然后把这个视频的链接复制到Chrome的浏览器来看看

    得到界面如下

    image-20200605181501490

    那么他这个一样是重定向链接

    https://www.iesdouyin.com/share/video/6811397272916561155/?region=CN&mid=6811389540717054723&u_code=0&titleType=title&utm_source=copy_link&utm_campaign=client_share&utm_medium=android&app=aweme

    正常来说请求第一种链接https://v.douyin.com/wGqCNG/和第二种重定向之后的链接都可以获取到信息,但是我发现第一种链接地址是找不到规律的,所以我猜测第二种网址的规律会更加的好找,先把链接地址复制到记事本中

    image-20200605181644158

    那么这么长的一个链接肯定起到了干扰作用,我们试着简化一下链接

    简化如下

    https://www.iesdouyin.com/share/video/6811397272916561155/?mid=6811389540717054723

    image-20200605181900505

    效果也是一样的

    image-20200605181915214

    当然一个肯定看不出规律

    我又找三个视频的链接进行分析

    简化完成如下图

    image-20200605182128609

    现在我们可以开始进行观察了

    https://www.iesdouyin.com/share/video/6811397272916561155/?mid=6811389540717054723
    https://www.iesdouyin.com/share/video/6833670208788368652/?mid=6833670314611329800
    https://www.iesdouyin.com/share/video/6833348557001526535/?mid=6833348588815321869

    不难发现,只不过是他的这个请求作品mid=xxx的值变了罢了

    然后我们返回一开始的这个作者页面

    image-20200605182438857

    然后我们来看一下date_id

    把上面mid的值到开发者工具栏中进行搜索,但万万没想到的是这个id根本找不到,那么换一种方式进行思考,这个是不是随机生成的呢?

    然而...

    我惊奇的发现我们把后面的mid=换了id后一样是这个视频,效果如下图

    如下动图所示

    icby

    由此可见,我们需要从这个id构造开始分析,我们还是返回作者的这个页面

    image-20200605183942507

    那么我们现在进行一下我们的network抓包,刷新页面

    然后查看一下XHR如下图

    image-20200605184117063

    点击Preview

    image-20200605184141581

    image-20200605184238005

    那么这里有一个很奇怪的数据包需要我们进行查看查找,可以看到这个有14个加载出来的数据,那么这个作者有177个作品,那么其他作品去哪里了呢?

    我们继续探究,我们把这个页面拖到最后又加载出来了几个数据包,说明了这个是一个动态加载的东西

    image-20200605184709905

    无论你抓取的作者刷新出来几个,然后我们现在随机选择一个数据包来看看

    image-20200605184831934

    注意写代码的时候有一个东西是必须注意的:

    那就是我们的user_agent这个就相当于我们浏览器的身份证,如果你不给他这个信息很有可能就被屏蔽了,那么我们的这个抖音肯定是有这个的

    img

    image-20200605185104808

    开始写代码:

    import requests
    import json
    
    class Douyin:
        def page_num(self,max_cursor):
            #网址后面的随机参数(我实在分析不出规律)
            random_field = '-.NwcBAVpTMTKVIN9tYXI.vzcG&dytk=e8941d87239ebe6eec9494a051dd03e7'
            #网址的主体
            url = 'https://www.iesdouyin.com/web/api/v2/aweme/post/?sec_uid=MS4wLjABAAAAYXYEhhUJ6b0qkg4P7pvp2Ea7VSLXYAbRtSiHTFEDvls&count=21&max_cursor=1557567997000&aid=1128&_signature=' + random_field
            #请求头
            headers = {
                'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36‘,
            }
            response = requests.get(url,headers=headers).text
            #转换成json数据
            resp = json.loads(response)
            #遍历
            for data in resp["aweme_list"]:
                # id值
                video_id = data['aweme_id']
                # 视频简介
                video_title = data['desc']
                # 构造视频网址
                video_url = 'https://www.iesdouyin.com/share/video/{}/?mid=1'
                # 填充内容
                video_douyin = video_url.format(video_id)
                print(video_id)
                print(video_title)
                print(video_douyin)
    
    if __name__ == '__main__':
         douyin = Douyin()
         douyin.page_num()
    

    注意这个数据包会定时随机刷新,所以这个东西可能等到你用的时候就会报错了

    下一篇文章讲一下代码如何写,欢迎关注!

    然后后期也是研究一下这个自动数据包抓包的一些方法的!

    icbug创客严格遵守文章协议!请勿侵犯作者权益复制直接转载,如需转载请标明出处!
    icbug创客 » 【电脑版本】小伙伴们期待已久的抖音爬虫来啦!

    2 评论

    1. 签到成功!签到时间:2020-06-09 18:21:55,每日打卡,生活更精彩哦~

    发表评论

    • 650会员总数(位)
    • 189资源总数(个)
    • 3本周发布(个)
    • 0 今日发布(个)
    • 224稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情