• python学习12--爬虫


    学习视频链接:
    https://www.bilibili.com/video/BV1gu411X7P6?p=18&vd_source=b425cf6a88c74ab02b3939ca66be1c0d

    1、使用request发送get请求

    在这里插入图片描述
    输入别的搜索词时,url栏query值变为输入内容,可发现通过改变query值查询不同内容
    在这里插入图片描述

    处理一个小反爬

    网站检测到发出请求的不是正常的浏览器,所以不给数据
    在这里插入图片描述
    看一下自己手动发送的这个请求中的user-agent是啥
    在这里插入图片描述
    放到代码里
    在这里插入图片描述
    否则默认的用户信息是:
    在这里插入图片描述

    2、使用request发送post请求

    可以发现,此时的参数并没有放在url上面
    在这里插入图片描述
    参数往往是在form data里面
    在这里插入图片描述
    在这里插入图片描述
    要把post的url全盘复制过来,不管后面都跟着些什么符号
    在这里插入图片描述
    返回获取的json数据
    下面对json数据进行解码:
    在这里插入图片描述
    用resp.text是返回的字符串,用resp.json返回的是字典,可以从里面一层一层地拿数据
    在这里插入图片描述

    3、参数的get请求

    发现数据是从这个url加载出来的
    在这里插入图片描述
    在headers中找到这个url的名字,?前是这个普通url的名字,?后是参数
    在这里插入图片描述
    参数:
    在这里插入图片描述
    可以与上面的一一对应
    在这里插入图片描述
    因为是get请求,所以参数都会拼到url里面
    可以通过代码print(resp.request.url)来查看

    4、正则表达式

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    5、数据解析

    提取出所需要的数据
    在这里插入图片描述

    • re模块
      python内置模块
    • find拿下所有匹配到的内容,返回列表、迭代器
      在这里插入图片描述
    • search只取到第一个匹配到的数据
      在这里插入图片描述
    • match从开头进行匹配,开头若没有则就是none
      在这里插入图片描述
    • compile预加载 使程序不用反复加载
      在这里插入图片描述
    • 实例
      在这里插入图片描述
      用括号把想要单独提取的内容括起来
      在这里插入图片描述
      给每一组匹配的内容分别起名,并提取
      在这里插入图片描述
      找到要提取的内容,开头是什么,结尾是什么,中间用正则表达式拼起来

    6、爬取实例

    发现要爬取的信息就在源代码中,所以通过requests.get().text拿到的页面源代码里面含有这些数据
    在这里插入图片描述

    1. 拿到页面源代码
      在这里插入图片描述
      确定是get
    2. 编写正则,提取页面数据
      找到要取出的部分、两个电影内容的分界点
      在这里插入图片描述
      可以先从更小的部分入手,如果成功取出,就继续
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      【坑】.是除了换行符号之外任意的符号,但是可以看到源代码中很多换行符号。python中有可以让.匹配换行符的方法。
      在这里插入图片描述
      下面补充正则
      在这里插入图片描述
      在这里插入图片描述
      注意
      在这里插入图片描述
      在这里插入图片描述
      如法炮制……
      在这里插入图片描述
      去掉年份前的空白
      在这里插入图片描述
    3. 保存数据
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      但是只提取了第一页的25条
      在这里插入图片描述
      每一页的参数不同
      在这里插入图片描述
      加一个循环,改变参数,可以提取出全部页数的内容
      在这里插入图片描述
  • 相关阅读:
    centos7 安装 qt5.14.2 以及 openssl 问题
    HCM 初学 ( 二 ) - 信息类型
    C# 13(.Net 9) 中的新特性 - 扩展类型
    oraenv Oracle_SID for sid in
    【代码源每日一题Div1】好序列/BZOJ4059「启发式分治」
    Unity中的旋转和矩阵操作
    NSX ALB + Harbor + OpenShift 4.8 UPI安装配置实验笔记系列目录
    Linux系统下安装和卸载Redis
    git及dbc的学习
    【Kotlin】类和对象
  • 原文地址:https://blog.csdn.net/AMWICD/article/details/125584450