• 2020.2.9


    今天以爬取一个六间房直播的视频联系使用python的爬虫

    爬虫的思路
    通过控制台确定出来爬取的数据包的地址
    发送请求---通过requests模块 模拟浏览器发送的数据请求获取响应数据
    解析数据---json字符串转化成python可以进行交互的数据类型
    将数据保存在目标文件夹中

    这里用到的数据包就是常见的两个requests还有json

    requests是python最简单实用的HTTP库,这力爬虫使用的就是requests库

    json主要是用来转化爬取到的数据包的格式为字典

    #练习通过爬取数据包的形式爬取数据
    #@Time 2020.2.10
    #xzy
    #爬虫的思路
    #通过控制台确定出来爬取的数据包的地址
    #发送请求---通过requests模块 模拟浏览器发送的数据请求获取响应数据
    #解析数据---json字符串转化成python可以进行交互的数据类型
    #将数据保存在目标文件夹中
    import requests
    import json
    #定义一个函数
    def video_spider():
    
        #确定了爬取的URL地址 确定请求头headers
        base_url = 'https://v.6.cn/minivideo/getlist.php?act=recommend&page=1&pagesize=20'
        headers = {'user-agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3314.0 Safari/537.36 SE 2.X MetaSr 1.0'}
        #发送请求模拟浏览器获取该网址的数据
        #定义了一个相应对象
        response = requests.get(base_url,headers = headers)
        data = response.text
        #接下来就进行解析数据
        #转化数据的类型
        dict_data = json.loads(data)#转化成为字典的格式 方便之后使用键值对的方式去获取到数据的
        #解析数据
        data_list = dict_data['content']['list']
        #print (data_list)
        #接下来遍历一下list下面的字典
        for data_dict in data_list :
            video_title = data_dict['title'] + '.mp4'
            video_url = data_dict['playurl']
    
            #print(video_title,video_url)
            #需要在title后缀添加.mp4后缀,才可以变成视频
            video_data = requests.get(video_url,headers=headers).content
            #保存到文件当中
            with open('video\' + video_title, 'wb') as f:
                f.write(video_data)
    
    
    
    #定义main 调用这个函数
    if __name__ == '__main__':
        video_spider()

    在爬取视频的时候遇到一个错误,需要在requests.get方法后面加上.content才可以得到视频

    requests对象的get和post方法都会返回一个Response对象,这个对象里面存的是服务器返回的所有信息,包括响应头,响应状态码等。其中返回的网页部分会存在.content和.text两个对象中。两者区别在于,content中间存的是字节码,而text中存的是Beautifulsoup根据猜测的编码方式将content内容编码成字符串。直接输出content,会发现前面存在b'这样的标志,这是字节字符串的标志,而text是',没有前面的b,对于纯ascii码,这两个可以说一模一样,对于其他的文字,需要正确编码才能正常显示。大部分情况建议使用.text,因为显示的是汉字,但有时会显示乱码,这时需要用.content.decode('utf-8'),中文常用utf-8和GBK,GB2312等。这样可以手工选择文字编码方式。所以简而言之,.text是现成的字符串,.content还要编码,但是.text不是所有时候显示都正常,这是就需要用.content进行手动编码。

  • 相关阅读:
    莫队
    NOIP2010_T4_引水入城 bfs+贪心
    拉灯游戏 搜索
    种花小游戏 随机化搜索
    [usaco2003feb]impster
    P1265 公路修建 (prim)
    P3378 【模板】堆
    并查集 模板
    P2661 信息传递
    P1828 香甜的黄油 Sweet Butter (spfa)
  • 原文地址:https://www.cnblogs.com/xuzhaoyang/p/12290444.html
Copyright © 2020-2023  润新知