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