• 爬虫之re块解析


    一.re

      这个去匹配比较麻烦,以后也比较少用,简单看一个案例就行

    '''
        爬取数据流程:
            1.指定url
            2.发起请求
            3.获取页面数据
            4.数据解析
            5.持久化存储
    '''
    
    import requests
    import re
    import os
    headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'
    }
    url = 'https://www.qiushibaike.com/pic/'
    
    #获取一整张页面数据源码
    page_text = requests.get(url=url,headers=headers).text
    
    #解析数据(将所有的图片链接获取)
    
    '''
    <div class="thumb">
    <a href="/article/121534421" target="_blank">
    <img src="//pic.qiushibaike.com/system/pictures/12153/121534421/medium/R0ZJYJDN8THHM0RS.jpg" alt="image">
    </a>
    </div>
    '''
    if not os.path.exists('qiubai'):
        os.mkdir('qiubai')
    
    ex = '<div class="thumb">.*?<img src="(.*?)" alt.*?</div>'
    img_url_list = re.findall(ex,page_text,re.S)#re.S单行匹配
    
    for url in img_url_list:
        url = 'https:'+url
        img_data = requests.get(url=url,headers=headers).content
        img_name = url.split('/')[-1]
        img_path = 'qiubai/'+img_name
        with open(img_path,'wb') as fp:
            fp.write(img_data)
            print(img_name+'下载成功!!!')

    二.使用re的注意点

    1.Windows转义符

    2.避免出错

      在正则表达式中尽量使用原始字符串,在待匹配字符中看到什么就在正则表达式中写什么,不容易出问题

      原始字符串的查看,可以借助ipython去查看,不要使用print

    3.

      

    re.findall('a(.*?)b','str')能返额回括号中的内容,括号前后的内容能起到一个定位的效果
    原始字符串,待匹配字符串出现反斜杠的时候,可以使用r来忽略反斜杠带来的转义效果
    点号默认匹配不到' '
    '/s'能匹配空白字符,不仅仅包括空格,还有'/t| '
  • 相关阅读:
    会计基础第二次模拟题(4)
    会计基础第二次模拟题(3)
    会计基础第二次模拟题(2)
    如何使用印象笔记进行更好的学习呢?
    怎么安装WinXP和Win7双系统
    清理和关闭多余的Windows 7系统服务
    Foxmail邮箱最新应用指南二
    Windows 系统提示“内存不足”的原因及解决方法
    会计基础第二次模拟试题(1)
    关于后端程序开发如何评估工作量的方法
  • 原文地址:https://www.cnblogs.com/tjp40922/p/10440192.html
Copyright © 2020-2023  润新知