爬虫项目实战七:爬取找万物视频

目标

爬取找万物小视频,批量下载到本地。

项目准备

软件:Pycharm
第三方库:requests,fake_useragent
网站地址:https://3b.link/h5/brochures

网站分析

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

页码分析

第一页:https://api.3b.link/Api/Brochure/HomeList?page=1&pageSize=15
第二页:https://api.3b.link/Api/Brochure/HomeList?page=2&pageSize=15
第三页:https://api.3b.link/Api/Brochure/HomeList?page=3&pageSize=15
第四页:https://api.3b.link/Api/Brochure/HomeList?page=4&pageSize=15
第五页:https://api.3b.link/Api/Brochure/HomeList?page=5&pageSize=15

根据每页的链接可以找到规律。只要page=之后数字的变化。

反爬分析

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

代码实现

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

import requests
from lxml import etree
from fake_useragent import UserAgent
class creation(object):
    def __init__(self):
        self.url = 'https://api.3b.link/Api/Brochure/HomeList?page={}&pageSize=15'
        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 = creation()
    spider.main()

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

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

3.解析网页获取视频链接地址。

扫描二维码关注公众号,回复: 12572713 查看本文章
    def parse_html(self,html):
        content_list=html['data']
        for content in content_list:
            merchantName=content['merchantName']
            videoUrl=content['videoUrl']
            filename=merchantName
            r=requests.get(videoUrl,headers=self.headers)
            with open('F:/pycharm文件/photo/'+filename+'.mp4','wb') as f:
                f.write(r.content)

4.主函数及函数调用。

    def main(self):
        start = int(input('输入开始:'))
        end = int(input('输入结束页:'))
        for page in range(start, end + 1):
            print('第%s页' % page)
            url = self.url.format(page)
            html=self.get_html(url)
            self.parse_html(html)

效果显示

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

import  requests
from fake_useragent import UserAgent
class creation(object):
    def __init__(self):
        self.url = 'https://api.3b.link/Api/Brochure/HomeList?page={}&pageSize=15'
        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['data']
        for content in content_list:
            merchantName=content['merchantName']
            videoUrl=content['videoUrl']
            filename=merchantName
            r=requests.get(videoUrl,headers=self.headers)
            with open('F:/pycharm文件/photo/'+filename+'.mp4','wb') as f:
                f.write(r.content)
    def main(self):
        start = int(input('输入开始:'))
        end = int(input('输入结束页:'))
        for page in range(start, end + 1):
            print('第%s页' % page)
            url = self.url.format(page)
            html=self.get_html(url)
            self.parse_html(html)
if __name__ == '__main__':
    spider = creation()
    spider.main()

猜你喜欢

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