热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

爬虫学习笔记day02

Day02笔记1、解析模块1、数据的分类1、结构化数据特点:有固定的格式,如:HTML、XML2、非结构化数据示例:图片、音频、视频,这类

Day02笔记
1、解析模块
  1、数据的分类
    1、结构化数据
      特点:有固定的格式,如:HTML、XML
    2、非结构化数据
      示例:图片、音频、视频,这类数据以二进制方式存储
  2、正则表达式 re
    1、使用流程
      1、创建编译对象 :p = re.compile('正则表达式')
      2、对字符串进行匹配 :r = p.match('字符串')
      3、获取匹配结果     :r.group()
    2、常用方法
      1、match(html) : 字符串开头的第1个,返回对象
      2、search(html): 从开始往后找,匹配第1个,返回对象
      3、findall(html) : 所有全部匹配,返回列表
    3、表达式
      .  : 匹配任意字符(不包括\n)
      \d : 数字
      \s : 空白字符
      \S : 非空白字符
      \w : 字母、数字、_
      [...] : 包含[]内容 :A[BCD]E --> ABE ACE ADE 

      *  : 0次或多次
      ?  : 0次或1次
      +  : 1次或多次
      {m}: m次
      {m,n} : m-n次,  AB{1,3}C ->ABC ABBC ABBBC
    4、贪婪匹配和非贪婪匹配
      贪婪匹配(.*) : 在整个表达式匹配成功的前提下,尽可能多的匹配*
      非贪婪匹配(.*?) :在整个表达式匹配成功的前提下,尽可能少的匹配*
      见 :01_贪婪匹配和非贪婪匹配示例.py
    5、findall()的分组
      见 :02_findall分组示例.py
    6、练习 见:03_findall分组练习.py
    


        


        
        

        


        Two tigers two tigers run fast
        


    

          
    

        


        
        

        


        Small while rabbit white and white
        


    

    第1步:      
    [("tiger","Two tigers .."),("rabbit","Small rabbit...")]
    第2步:
    动物名称:tiger
    动物描述:Two tigers ...
  3、内涵段子脑筋急转弯抓取 
    见:04_内涵8脑筋急转弯.py
    网址 :http://www.neihan8.com
    1、步骤
      1、找URL规律
        第1页:https://www.neihan8.com/njjzw/
    第2页:https://www.neihan8.com/njjzw/index_2.html
      2、用正则匹配出题目和答案
      3、写代码
        1、发请求
    2、用正则解析
      
.*?class="desc">(.*?)

    3、保存
  4、猫眼电影top100榜单,存到csv文件里
    见 :06_猫眼电影top100.py
    网址 :猫眼电影 - 榜单 - top100榜
    目标 :抓取电影名、主演、上映时间
    1、知识点
      1、csv模块的使用流程
        1、打开csv文件
      with open("测试.csv","a",newline="") as f:
    2、初始化写入对象
      writer = csv.writer(f)
    3、写入数据(列表)
      writer.writerow([列表])
    2、准备工作
      1、找URL规律
        第1页:http://maoyan.com/board/4?offset=0
    第2页:http://maoyan.com/board/4?offset=10
    第n页:offset=(n-1)*10
      2、写正则表达式
       
.*?title="(.*?)".*?class="star">(.*?)

.*?class="releasetime">(.*?)


      3、写代码
2、数据持久化存储
  1、存入mongodb数据库(pymongo模块回顾)
    # 创建连接对象
    conn = pymongo.MongoClient("localhost",27017)
    # 创建数据库对象
    db = conn.库名
    # 创建集合对象
    myset = db.集合名
    # 插入数据
    myset.insert(字典)

    >>>show dbs
    >>>use 库名
    >>>show collections
    >>>db.集合名.find().pretty()
    >>>db.dropDatabase()
    >>>db.集合名.count()
  2、存入MySQL数据库(pymysql模块回顾)
3、requests模块
  1、安装
    Anaconda Prompt : conda install requests
    Windows cmd     : python -m pip install requests
      ## python -m 是以管理员身份执行pip安装命令
    Ubuntu          : sudo pip3 install requests
  2、常用方法
    1、requests.get(url,headers=headers)
      发起请求,并获取响应对象
    2、响应对象res的属性
      1、res.text    : 字符串
      2、res.content : 字节流
      3、res.encoding: 指定字符编码 (ISO-8859-1)
             ## res.encoding = "utf-8"
      4、res.status_code : 响应码
      5、res.url         : 实际数据的URL
    3、get()使用场景
      1、没有查询参数
        res = requests.get(url,headers=headers)
      2、有查询参数(params)
        res = requests.get(url,params=params,headers=headers)

        


 


推荐阅读
  • 如何彻底清除顽固软件如360
    本文详细介绍了如何彻底卸载难以删除的软件,如360安全卫士。这类软件不仅难以卸载,还会在开机时启动多个应用,影响系统性能。我们将提供两种有效的方法来帮助您彻底清理这些顽固软件。 ... [详细]
  • 本文详细介绍了如何使用Python编写爬虫程序,从豆瓣电影Top250页面抓取电影信息。文章涵盖了从基础的网页请求到处理反爬虫机制,再到多页数据抓取的全过程,并提供了完整的代码示例。 ... [详细]
  • 本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]
  • 本文介绍如何使用Python进行文本处理,包括分词和生成词云图。通过整合多个文本文件、去除停用词并生成词云图,展示文本数据的可视化分析方法。 ... [详细]
  • 深入解析JMeter中的JSON提取器及其应用
    本文详细介绍了如何在JMeter中使用JSON提取器来获取和处理API响应中的数据。特别是在需要将一个接口返回的数据作为下一个接口的输入时,JSON提取器是一个非常有用的工具。 ... [详细]
  • dotnet 通过 Elmish.WPF 使用 F# 编写 WPF 应用
    本文来安利大家一个有趣而且强大的库,通过F#和C#混合编程编写WPF应用,可以在WPF中使用到F#强大的数据处理能力在GitHub上完全开源Elmis ... [详细]
  • 本文介绍如何使用 Python 获取文件和图片的创建、修改及拍摄日期。通过多种方法,如 PIL 库的 _getexif() 函数和 os 模块的 getmtime() 和 stat() 方法,详细讲解了这些技术的应用场景和注意事项。 ... [详细]
  • 深入理解Redis的数据结构与对象系统
    本文详细探讨了Redis中的数据结构和对象系统的实现,包括字符串、列表、集合、哈希表和有序集合等五种核心对象类型,以及它们所使用的底层数据结构。通过分析源码和相关文献,帮助读者更好地理解Redis的设计原理。 ... [详细]
  • 本文详细解析了如何使用Python的urllib模块发起POST请求,并通过实例展示如何爬取百度翻译的翻译结果。 ... [详细]
  • 深入剖析 DEX 赛道:从 60 大头部项目看五大趋势
    本文通过分析 60 大头部去中心化交易平台(DEX),揭示了当前 DEX 赛道的五大发展趋势,包括市场集中度、跨链协议、AMM+NFT 结合、新公链崛起以及稳定币和衍生品交易的增长潜力。 ... [详细]
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • 反向投影技术主要用于在大型输入图像中定位特定的小型模板图像。通过直方图对比,它能够识别出最匹配的区域或点,从而确定模板图像在输入图像中的位置。 ... [详细]
  • 本文介绍如何使用 Android 的 Canvas 和 View 组件创建一个简单的绘图板应用程序,支持触摸绘画和保存图片功能。 ... [详细]
  • 百度服务再次遭遇技术问题,疑似DNS解析故障
    近日晚间,百度多项在线服务出现加载异常,包括移动端搜索在内的多个功能受到影响。初步迹象表明,问题可能与DNS服务器解析有关。 ... [详细]
  • 分享一个简化版的Silverlight链接图项目:Link Map Simplified
    本文介绍了一个使用Silverlight开发的可视化工具,主要用于展示和操作复杂的实体关系图(Graph)。该工具在犯罪调查系统中得到了广泛应用,帮助用户直观地获取和理解相关信息。 ... [详细]
author-avatar
捕鱼达人2602914975
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有