zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Python爬虫之Urllib(内置库)

Python爬虫 内置 urllib
2023-09-11 14:19:57 时间

请添加图片描述

@作者 : SYFStrive

@博客首页 : HomePage

🥧 Python入门文章传送门

📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗

📌:如果觉得文章对你有帮助可以点点关注 👉:专栏连接🔗

💃:程序员每天坚持锻炼💪

🔗:
阅读文章
在这里插入图片描述


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

爬虫🐛

请添加图片描述

什么是爬虫❓

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

解释1:通过一个程序,根据Url(爬取的链接)进行爬取网页,获取有用信息
解释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://search?q=%大司马

在这里插入图片描述

📰演示:

在这里插入图片描述

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

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

请添加图片描述