美文网首页
爬虫学习

爬虫学习

作者: 酥酒 | 来源:发表于2020-08-06 18:07 被阅读0次

前言: 出于兴趣,这里来做了一个半自动化的抖音视频爬虫,该爬虫可以实现爬取某一用户发布的所有视频。

安装mitmproxy
pip3 install mitmproxy
安装报错

ImportError: cannot import name 'PyAsn1UnicodeDecodeError' from 'pyasn1.error' (d:\anaconda3\lib\site-packages\pyasn1\error.py)

**解决方法:**
**1、先卸载**

C:\Users\lzc>**pip uninstall pyasn1**

Found existing installation: pyasn1 0.4.4

Uninstalling pyasn1-0.4.4:

  Would remove:

    d:\anaconda3\lib\site-packages\pyasn1-0.4.4-py3.7.egg-info

    d:\anaconda3\lib\site-packages\pyasn1\*

Proceed (y/n)? y

  Successfully uninstalled pyasn1-0.4.4

**2、重新安装**

C:\Users\lzc>pip install pyasn1

WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='pypi.org', port=443): Read timed out. (read timeout=15)")': /simple/pyasn1/

Collecting pyasn1

  Using cached pyasn1-0.4.8-py2.py3-none-any.whl (77 kB)

ERROR: mitmproxy 5.1.1 has requirement ruamel.yaml<0.17,>=0.16, but you'll have ruamel-yaml 0.15.46 which is incompatible.

Installing collected packages: pyasn1

Successfully installed pyasn1-0.4.8

启动mitmproxy之后,手机网打开网址:mitm.it ,选择匹配的证书下载安装(见下图),然后开启信任证书(设置--通用--关于本机--证书信任设置),就能抓到https的请求了。

运行时发现端口被占用

Python flask OSError[Errno 48]:Address already in use

建立Flask项目filename.py后,运行该项目,报错内容如下:

意思是地址已被使用,搜索相关问题后发现是因为,你曾启动过相同或者类似的服务占用了这个端口(一般来讲,在Mac上直接用Python启动的话,会导致退出不完整,你不能通过点击GUI的“退出”按钮来一步到位,后台的Python进程还是存在的,而它就是一直占用端口不释放的元凶)。
找到的解决办法如下:
1.改掉默认的端口
2.就是杀掉占用端口的程序
第一种方法只能解决当前的问题,后续仍会出现类似的问题
第二种更靠谱一些,具体操作如下
使用lsof命令,全写是list open fail,意为列出当前系统打开文件
我们要找到之前占用的端口5000,所以终端输入的命令为
lsof -i:5000,然后可以看到PID为9108

接下来杀掉这个进程就可以了,在终端输入命令
kill 9108 , 之后重新运行下程序就不会报错了
强杀kill -9 9108

CODE:

import json,os
import requests
 
def response(flow):
    #分析数据发现这是抖音旧的视频请求地址(估计是防爬取定时换的吧)
    #url='https://api.amemv.com/aweme/v1/aweme/post/'
    url='https://api3-normal-c-lq.amemv.com/aweme/v1/aweme/post/'
    #筛选出以上面url为开头的url
    if flow.request.url.startswith(url):
        text=flow.response.text
        #将已编码的json字符串解码为python对象
        data=json.loads(text)
 
        #在charles中刚刚看到每一个视频的所有信息
        #都在aweme_list中
        video_url=data['aweme_list']
        print(video_url)
        path='G:/Others/Douyin'
        #path='D:\crawler_data\douyin'
        if not os.path.exists(path):
            os.mkdir(path)
        for each in video_url:
            #视频描述
            desc=each['desc']
            url=each['video']['play_addr']['url_list'][0]
            # print(desc,url)
            filename=path+'/'+desc+'.mp4'
            # print(filename)
            req=requests.get(url=url,verify=False)
            with open(filename,'ab') as f:
                f.write(req.content)
                # 在文件关闭前,将缓存区的内容刷新到硬盘
                f.flush()
                print(filename,'下载完毕')

执行python脚本
mitmdump -s 脚本路径

Charles分析:


image.png

好了的样子:


image.png

PS:

1、由于mitmdump自带的包只是基本python库,这里需要将python代码放到python的site-packages文件夹中运行。
2、在刷抖音的过程中,想下载谁的视频,只需要将代码运行着,点谁的用户的主页就可以下载到视频。
3、在模拟器的配置过程中,遇到了配置好mitmproxy证书以后抖音无法正常联网的情况,这里需要搜索一下安卓关闭SSL教程,需要刷xpose框架,和一个什么东西,搜索一下模拟器关闭SSL即可。

————————————————
github地址: https://github.com/xiaobaixz/Douyin_spider
版权声明:本文为CSDN博主「TAF_MT」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_40258748/article/details/104728673
https://www.cnblogs.com/liangmingshen/p/12375124.html
————————————————
版权声明:本文为CSDN博主「SelinaGu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/SelinaGu/article/details/103732131

相关文章

  • 爬虫入门

    为什么要学习爬虫? Python做爬虫优势 关于Python网络爬虫,我们需要学习的有: 什么是爬虫? 网络爬虫(...

  • 资料

    Python爬虫系列(一)初期学习爬虫的拾遗与总结(11.4更) Python爬虫学习系列教程 Python爬虫学习手册

  • Python爬虫学习(十六)初窥Scrapy

    Python爬虫学习(一)概述Python爬虫学习(二)urllib基础使用Python爬虫学习(三)urllib...

  • Python爬虫学习系列教程

    转自: 静觅»Python爬虫学习系列教程 Python爬虫学习系列教程 Python版本:2.7 一、爬虫入门 ...

  • Python爬虫学习之小结(一)

    到目前为止,Python爬虫学习已经写了八篇文章,分别是: Python爬虫学习(一)概述Python爬虫学习(二...

  • python爬虫学习-day7-实战

    目录 python爬虫学习-day1 python爬虫学习-day2正则表达式 python爬虫学习-day3-B...

  • Python 基础爬虫目录

    目录 python爬虫学习-day1 python爬虫学习-day2正则表达式 python爬虫学习-day3-B...

  • python爬虫学习-day5-selenium

    目录 python爬虫学习-day1 python爬虫学习-day2正则表达式 python爬虫学习-day3-B...

  • python爬虫学习-day6-ip池

    目录 python爬虫学习-day1 python爬虫学习-day2正则表达式 python爬虫学习-day3-B...

  • python爬虫学习-day3-BeautifulSoup

    目录 python爬虫学习-day1 python爬虫学习-day2正则表达式 python爬虫学习-day3-B...

网友评论

      本文标题:爬虫学习

      本文链接:https://www.haomeiwen.com/subject/nngvxktx.html