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进行手动编码。

原文地址:https://www.cnblogs.com/xuzhaoyang/p/12290444.html