zoukankan      html  css  js  c++  java
  • python-re(正则)实现简单爬虫实例(文字、图片、视频)

    爬虫-文字爬取

    import re
    import requests
    respone = requests.get('https://ishuo.cn/') ##获取网站url
    data = respone.text ##把字符串转化成文本
    result_list = re.findall('<div class="content">(.*?)</div>',data) ##找到需要爬取的内容,需要爬取的内容用'(.*?)'来代替,其他格式不变。
    '''
    <div class="content">如果你得罪了老板,失去的只是一份工作;
    如果你得罪了客户,失去的不过是一份订单;是的,世上只有一个人可以得罪:你给她脸色看,你冲她发牢骚,
    你大声顶撞她,甚至当 着她的面摔碗,她都不会记恨你,原因很简单,因为她是你的母亲。</div>
    '''
    for result in result_list:  ##爬取这个网页所有标记的文本
        print(result)
    

    爬虫-图片爬取

    import re
    import requests
    count = 0
    for i in range(44): ##设置图片网页的范围,进行网页跳转。
        url = f'http://www.xiaohuar.com/list-1-{i}.html' ##获取跳转网页的url路径
        response = requests.get(url) ##获取网页url路径,并赋值给response
        data= response.text  ##将response转化成text文本并赋值给data
        # print(data)
        result_list = re.findall('src="(.*?)"',data)  ##从data文本中提取需要爬取的图片路径,用“(.*?)”来代替,并赋值给result_list(变成列表)
        for result in result_list: # type:str ##逐个提取图片url出来
            if result.startswith('https'):  ##刷选开头是”https“的图片url
                img_respone = requests.get(result)  ##将开头是“https”的图片url提取出来,并赋值给img_response列表
                # print(img_respone)
                img_name = result.split('/')[-1]  ##对列表中图片url以“/”标识进行切分,并提取最后一段url,并赋值给img_name
                # print(img_name)
                img_data = img_respone.content  ##将列表img_response转换成二进制格式
                with open (img_name,'wb') as fw:  ##打开img_name文件,并赋予写入权限(以字节格式写入)
                    fw.write(img_data)  ##将img_data的数据写入img_name文件
                    fw.flush()   ##快速写入
                count +=1
                print(f'爬取了{count}张图片')  ##可以显示提示提取了多少张图片
    
    

    爬虫-视频爬取

    import re
    import requests
    response = requests.get('https://www.ku6.com/index') ##获取网站url
    data = response.text  ##将response转换成文本格式
    count = 0
    result_list = re.findall('<a class="video-image-warp" target="_blank" href="(.*?)">',data)  ##获取视频地址
    for result in result_list: #type:str ##将获取第一层视频地址全部提取出来
        # print(result)
        if result.startswith('/detail/') or result.startswith('/video/'):   ##判断result里面以“/detail/”和“/video/”开头的url路径
            result = f'https://www.ku6.com{result}'  ## 提取判断正确的url路径,并赋值给第二层url列表
            result_response = requests.get(result)  ##重新获取第二层视频url路径,并赋值给response1
            data1 = result_response.text    ##将response1格式转换成文本
            #print(data1)
            video_url = re.findall('<source src="(.*?)" type="video/mp4">',data1) ##获取视频地址
            # print(video_url)
            if not video_url:   ##对视频格式进行判断
                video_url = re.findall('flvURL: "(.*?)"',data1)  ##如果视频不是这个url格式,则更换成另外一种格式
            # print(video_url)
            video_response = requests.get(video_url[0])  ##获取视频url路径
            video_data = video_response.content
    
            video_name = f"{video_url[0].split('/')[-1]}.mp4"
            with open (video_name,'wb') as fw:
                fw.write(video_data)
                fw.flush()
            count +=1
            print(f'爬取了{count}个视频')
    
  • 相关阅读:
    二维码生成:使用 JavaScript 库QRCode.js生成二维码
    VC++6.0远程调试(亲试成功)
    Linux同时安装python2和Python3
    Python打包-py2exe
    camera按键采集图像及waitKey的用法(转)
    ucos实时操作系统学习笔记——任务间通信(信号量)(转)
    STM32硬件IIC驱动设计(转)
    基于STM32F4移植W5500官方驱动库ioLibrary_Driver(转)
    USB基础知识概论(版本:v0.9.2)
    usb帧格式
  • 原文地址:https://www.cnblogs.com/raynduan/p/10858746.html
Copyright © 2011-2022 走看看