• Python爬虫之Urllib(内置库)


    活动地址:CSDN21天学习挑战赛

    以下是关于Python~Urllib内置库的使用
    🥧 续Python入门点击跳转到Python入门文章
    🥧快,跟我一起爬起来💪
    🕷🐍💀🐗🐛
    🐜🐶😺🕷🐿
    🦄🐆🐯🐅🐘
    🐐🐐🐊🐵🐒

    提示:以下是本篇文章正文内容

    爬虫🐛

    请添加图片描述

    什么是爬虫❓

    1. 网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。 通俗来讲,假如你需要互联网上的信息,如商品价格,图片视频资源等,但你又不想或者不能自己一个一个自己去打开网页收集,这时候你便写了一个程序,让程序按照你指定好的规则去互联网上收集信息,这便是爬虫,我们熟知的 百度,谷歌 等搜索引擎背后其实也是一个巨大的 爬虫 。
    2. 如果我们把互联网比作一张大的蜘蛛网,那一台计算机上的数据便是蜘蛛网上的一个猎物,而爬虫程序就是一只小蜘蛛,沿着蜘蛛网抓取自己想要的数据

    解释1:通过一个程序,根据Url(https://www.baidu.com/)进行爬取网页,获取有用信息
    解释2:使用程序模拟浏览器,去向服务器发送请求,获取响应信息

    爬虫核心❓

    1. 爬取网页:爬取整个网页 包含了网页中所有得内容
    2. 解析数据:将网页中你得到的数据 进行解析
    3. 难点:爬虫和反爬虫之间的博弈
    4. 反爬策略:

    1、以浏览器的形式访问

    2、部署多个应用分别抓取,降低单节点频繁访问

    ……

    爬虫的用途❓

    1. 12306抢票,网络投票等
    2. 通过爬虫爬取数据
    3. 去免费的数据网站爬取数据
      ……

    爬虫分类❓

    1. 通用爬虫:
    • 功能:

      访问网页👉抓取数据👉数据存储👉数据处理👉获取数据

    • 缺点

      1. 抓取的数据大多是无用的
      2. 不能根据用户的需求来精准获取数据
    1. 聚焦爬虫:
    • 功能:

      根据需求👉实现爬虫程序👉抓取需要的数据

    • 设计思路

      1. 确定要爬取的url
        如何获取Url❓
      2. 模拟浏览器通过http协议访问url,获取服务器返回的html代码
        如何访问❓
      3. 解析html字符串(根据一定规则提取需要的数据)
        如何解析❓
    1. 增量式爬虫 (爬取更新的页面,新的信息)
    2. 深层网络爬虫(简而言之,提交表单的深层页面 构成:url列表,LVS列表,爬行控制器等)也是一些纲领性的内容,一定要有个底。

    反爬的几种手段❓

    1. User‐Agent:

      User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。

    2. 代理IP:

      • 简单的说,通过购买或使用免费(一般失败)ip代理,从不同的ip进行访问,这样就不会被封掉ip了。
      • 什么是高匿名、匿名和透明代理?它们有什么区别?
        1、使用透明代理,对方服务器可以知道你使用了代理,并且也知道你的真实IP。
        2、使用匿名代理,对方服务器可以知道你使用了代理,但不知道你的真实IP。
        3、使用高匿名代理,对方服务器不知道你使用了代理,更不知道你的真实IP。
    3. 验证码:

      1、打码平台
      2、云打码平台

    4. JavaScript 参与运算,返回的是js数据 并不是网页的真实数据

      1. 解决方法:使用PhantomJS
      2. PhantomJS是一个可编程的无头浏览器.
      3. PhantomJS是一个Python包,他可以在没有图形界面的情况下,完全模拟一个浏览器,js脚本验证什么的再也不是问题了。
    5. 职业选手级别(代码混淆、动态加密方案、假数据,混淆数据等方式)

      • 解决方法:持续对抗,直到对方放弃😀
    6. 赶紧爬起来👇🕷🕷🕷🕷🕷🕷

    爬虫之Urllib的使用🐊

    Python库的使用方法

    使用Uellib爬取🔎源码

    📰

    在这里插入图片描述

    如👇图所示爬取成功

    在这里插入图片描述

    这时ctrl+a 👉 ctrl+c 👉 ctrl+v 👉 如下所示😁

    请添加图片描述
    请添加图片描述

    Response响应(一个类型 六个方法)

    1. Response相应(一个类型 六个方法)
    2. 类型:HTTPResponse
    3. 方法:read readline readlines getcode geturl getheaders

    使用如下:

    在这里插入图片描述

    使用Urllib简单爬取图片、视频和🔎源码 (保存到本地)

    📰

    在这里插入图片描述

    如下图(下载保存到本地):

    在这里插入图片描述

    爬虫之Urllib~UA反爬(定制对象)🐍

    请添加图片描述

    跳转UA反爬说明

    语法:request = urllib.request.Request()

    📰演示:

    在这里插入图片描述

    如👇图(遇到了UA反爬):

    在这里插入图片描述
    解决获得UA:
    方法一:🔎跳转
    方法二:开发工具找如 👇 图

    在这里插入图片描述

    得UA 👉 定制 👉 再次爬取

    📰演示:

    在这里插入图片描述

    如下图(爬取成功🆗):

    在这里插入图片描述

    爬虫之Unicode编解码🐒

    get请求方式☞单个参数

    引入 import urllib.parse
    语法::urllib.parse.quote()

    爬取链接:https://cn.bing.com/search?q=%E5%A4%A7%E5%8F%B8%E9%A9%AC

    在这里插入图片描述

    📰演示:

    在这里插入图片描述

    如👇图所示(我们已经爬取成功了):

    url = ‘https://cn.bing.com/search?q=%E5%A4%A7%E5%8F%B8%E9%A9%AC’

    但是url后面的%E5%91%A8%E6%9D%B0%E4%BC%A6(Unicode编码)让我们很难受(我们怎么才能直接把url变成 👉 url = 'https://cn.bing.com/search?q=大司马’❓)

    这时就要用到编解码

    在这里插入图片描述

    📰编解码演示:

    在这里插入图片描述

    如下图所示(也是爬取成功的):

    在这里插入图片描述

    请添加图片描述

    get请求方式☞多个参数

    引入 import urllib.parse
    语法:urllib.parse.urlencode(data)

    📰演示:

    在这里插入图片描述

    如下图所示(爬取成功):

    在这里插入图片描述

    请添加图片描述

    爬虫之爬取🔎翻译(post请求)🐜

    🔎翻译之Errno解析

    1. rrno:997 cookie失效
    2. errno:998 sign参数错误
    3. errno:999 post未提交from,to参数
    4. error:1000 需要翻译的字符串为空 # 记住,这个是error,也许是🔎发现自己的errno拼错了吧

    爬虫之post 对比于 get

    post VS get

    1. post请求的参数 必须要进行编码
    2. 编码后 必须调用encode方法
    3. post请求的参数是放在请求对象定制的参数中

    import json

    • Python json.loads()用法
    1. 参数:它接受一个字符串,字节或字节数组实例,该实例包含JSON文档作为参数。
    2. 返回:它返回一个Python对象。

    普通的爬

    普通爬如👇:

    在这里插入图片描述

    • 找规律
    1. 爬虫起始难度就在于找规律
    2. 如🔎翻译,当你输入每个字母时他都会发送一个参数到后台返回数据
    3. 这个参数就是kw,最终把kw当作参数就可以爬了😀( 其他类似)
    4. 接口URL如👇

    在这里插入图片描述

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

    📰演示:

    在这里插入图片描述

    如下图所示(爬取成功):

    在这里插入图片描述
    请添加图片描述

    详细爬(Cookie反爬)

    请添加图片描述

    详细爬如👇:

    在这里插入图片描述

    • 接口&&参数

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

    • 遇到Cookie反爬反扒(解决方法如👇):
    1. 手动处理
      在开发手动捕获cookie,将其封装在headers中
      应用场景:cookie没有有效时长且不是动态变化

    2. 自动处理
      使用session机制
      使用场景:动态变化的cookie
      session对象:该对象和requests模块用法几乎一致.如果在请求的过程中产生了cookie,如果该请求使用session发起的,则cookie会被自动存储到session中

    📰演示:

    在这里插入图片描述

    如下图所示(爬取成功):

    在这里插入图片描述

    请添加图片描述

    最后

    本文章到这里就结束了,觉得不错的请给我专栏点点订阅,你的支持是我们更新的动力,感谢大家的支持,希望这篇文章能帮到大家

    点击跳转到我的Python专栏

    请添加图片描述

    下篇文章再见ヾ( ̄▽ ̄)ByeBye

    请添加图片描述

  • 相关阅读:
    数组对象数据修改后页面没有更新,无法进行编辑,校验失效问题
    目标检测YOLO实战应用案例100讲-基于YOLOv5的船舶检测
    逻辑运算与按位运算
    YOLOV7改进-添加EIOU,SIOU,AlphaIOU,FocalEIOU
    node nrm切换镜像源
    java redis 连接池
    protobuf对象与JSON相互转换
    distcc分布式编译
    Struts2参数值自动注入到JavaBean对象的属性中和JavaBean对象的属性值展示在页面中
    新库上线 | CnOpenData招聘公司基本信息扩展数据
  • 原文地址:https://blog.csdn.net/m0_61490399/article/details/126118270