爬虫项目实战九:爬取6间房小视频

目标

爬取6间房小视频,批量保存到本地文件夹。

项目准备

软件:Pycharm
第三方库:requests,fake_useragent
网站地址:https://v.6.cn/minivideo/

网站分析

打开网站
在这里插入图片描述
分析网页是什么加载类型。
F12打开开发者模式。
在这里插入图片描述
这是抓取的数据包。
在这里插入图片描述
判断为动态加载类型。

页码分析

第一个数据包:
在这里插入图片描述
第二个数据包:
在这里插入图片描述
第三个数据包:
在这里插入图片描述

https://v.6.cn/minivideo/getMiniVideoList.phpact=recommend&page=1&pagesize=25
https://v.6.cn/minivideo/getMiniVideoList.phpact=recommend&page=2&pagesize=25
https://v.6.cn/minivideo/getMiniVideoList.phpact=recommend&page=3&pagesize=25

可以看出来,每一页随着页码page=而变化。

反爬分析

同一个ip地址去多次访问会面临被封掉的风险,这里采用fake_useragent,产生随机的User-Agent请求头进行访问。

代码实现

1.导入相对应的第三方库,定义一个class类继承object,定义init方法继承self,主函数main继承self。

import requests
from fake_useragent import UserAgent
class sixroom(object):
    def __init__(self):
        self.url = 'https://v.6.cn/minivideo/getMiniVideoList.php?act=recommend&page={}&pagesize=25'
        ua = UserAgent(verify_ssl=False)
        for i in range(1, 100):
            self.headers = {
    
    
                'User-Agent': ua.random
            }
    def main(self):
        pass
if __name__ == '__main__':
    spider = sixroom()
    spider.main()

2.发送请求,获取网页。

    def get_html(self,url):
        response = requests.get(url, headers=self.headers)
        html = response.json()
        return html

3.解析网页获取小视频链接地址并保存到本地。

    def parse_html(self,html):
        content_list=html['content']['list']
        for data in content_list:
            alias=data['alias']
            title=data['title']
            playurl=data['playurl']
            filename=alias+'.'+title
            print(filename)
            r=requests.get(playurl,headers=self.headers)
            with open('F:/pycharm文件/document/'+filename+'.mp4','wb') as f:
                f.write(r.content)

4.主函数及函数调用。

    def main(self):
        end_page = int(input("要爬多少页:"))
        for page in range(1, end_page + 1):
            url = self.url.format(page)
            print("第%s页。。。。" % page)
            html = self.get_html(url)
            self.parse_html(html)
            print("第%s页爬取完成" % page)

效果显示

在这里插入图片描述
在这里插入图片描述
完整代码如下:

import requests
from fake_useragent import UserAgent
class sixroom(object):
    def __init__(self):
        self.url = 'https://v.6.cn/minivideo/getMiniVideoList.php?act=recommend&page={}&pagesize=25'
        ua = UserAgent(verify_ssl=False)
        for i in range(1, 100):
            self.headers = {
    
    
                'User-Agent': ua.random
            }
    def get_html(self,url):
        response = requests.get(url, headers=self.headers)
        html = response.json()
        return html
    def parse_html(self,html):
        content_list=html['content']['list']
        for data in content_list:
            alias=data['alias']
            title=data['title']
            playurl=data['playurl']
            filename=alias+'.'+title
            print(filename)
            r=requests.get(playurl,headers=self.headers)
            with open('F:/pycharm文件/document/'+filename+'.mp4','wb') as f:
                f.write(r.content)
    def main(self):
        end_page = int(input("要爬多少页:"))
        for page in range(1, end_page + 1):
            url = self.url.format(page)
            print("第%s页。。。。" % page)
            html = self.get_html(url)
            self.parse_html(html)
            print("第%s页爬取完成" % page)
if __name__ == '__main__':
    spider = sixroom()
    spider.main()

声明:仅做自己学习参考使用。

猜你喜欢

转载自blog.csdn.net/qq_44862120/article/details/107826614