zoukankan      html  css  js  c++  java
  • python爬虫基础应用----爬取无反爬视频网站

    一.爬虫简单介绍

      爬虫是什么?

      爬虫是首先使用模拟浏览器访问网站获取数据,然后通过解析过滤获得有价值的信息,最后保存到到自己库中的程序.

      爬虫程序包括哪些模块?

      python中的爬虫程序主要包括,requests请求库,seleium请求库,xpath和BeautSoup4解析库,

      爬取校花网需要使用到哪些模块?

      校花网结构简单,而且没有任何防爬手段,所在只需要使用requests就可以完成了=.=.

    二.具体操作

      1.获得网页

      网站地址:http://www.xiaohuar.com/

      我要爬取的视频网页主页为http://www.xiaohuar.com/list-3-0.html

      下一页为http://www.xiaohuar.com/list-3-1.html

      总共有五页所以,拼接生成五页主页.

    url = 'http://www.xiaohuar.com/list-3-{}.html'
    for line in range(5):
        index_url = url.format(line)

      2.主页解析

      主页中跳转到详情页的连接在这里

    #使用正则可以获得详情页网址.
    
    re.findall('<div class="items".*?<a href="(.*?)"',index_res,re.S)

      3.详情页解析

      详情页中的视频连接在这个位置 

      

    #正则匹配获得视频的网址
    video_url = re.findall('<source src="(.*?)">',detail_page,re.S) 
    
    # 顺便获得视频的名字
    video_name = re.findall('<h1>(.*?)</h1>',detail_page,re.S)

      4.保存视频

      将上获得的网址与视频名传入函数,打开网址将内容保存到video中 "视频名字".mp4的文件中,

    def save_video(video_dic):
        try:
            video_url=video_dic.get('url')
            video_name=video_dic.get('name')
            video = requests.get(video_url)
            with open(r'video/%s.mp4'%video_name,'wb') as f:
                f.write(video.content)
                f.flush()
        except Exception:
            pass

      5.全部执行代码

    import requests
    import re
    import uuid
    
    #一.获取网页
    
    url='http://www.xiaohuar.com/'
    
    def get_page(url):
        index_res = requests.get(url)
        return index_res.text
    
    #二.解析网站
    # 解析主页
    def parse_index(index_res):
        detail_url_list = re.findall('<div class="items".*?<a href="(.*?)"',index_res,re.S)
        return detail_url_list
    
    #解析详情页
    def parse_detail(detail_page):
        video_url = re.findall('<source src="(.*?)">',detail_page,re.S)
        video_name = re.findall('<h1>(.*?)</h1>',detail_page,re.S)
        print(video_url)
        print(video_name)
        if video_url:
            video_url=video_url[0]
            if video_name:
                video_name=video_name[0]
                return {'url': video_url, 'name': video_name}
            else:
                video_name=uuid.uuid4()
                return {'url':video_url,'name':video_name}
    
    #三.保存视频
    def save_video(video_dic):
        try:
            video_url=video_dic.get('url')
            video_name=video_dic.get('name')
            video = requests.get(video_url)
            with open(r'video/%s.mp4'%video_name,'wb') as f:
                f.write(video.content)
                f.flush()
        except Exception:
            pass
    
    if __name__=='__main__':
        url = 'http://www.xiaohuar.com/list-3-{}.html'
        for line in range(5):
            index_url = url.format(line)
            print(index_url)
            # 获得主页文本
            index_res = get_page(index_url)
            # 解析主页,获得详情页网址列表
            detail_url_list = parse_index(index_res)
            print(detail_url_list)
            for detail_url in detail_url_list:
                detail_page = get_page(detail_url)
                video_dic=parse_detail(detail_page)
                save_video(video_dic)
  • 相关阅读:
    探测行星-搜寻外星行星
    NLM非局部均值算法相关
    LBP纹理特征
    IPOL图像处理分析经典在线(文献+源码)
    Halcon学习之四:有关图像生成的函数
    Halcon学习之三:有关图像通道的函数
    Halcon学习之二:摄像头获取图像和相关参数
    Halcon学习之边缘检测函数
    Halcon学习之一:查询图像参数
    Halcon学习之两幅图像处理
  • 原文地址:https://www.cnblogs.com/gongcheng-/p/10513854.html
Copyright © 2011-2022 走看看