Python爬虫之Urllib(内置库)
@作者 : SYFStrive
@博客首页 : HomePage
🥧 Python入门文章传送门
📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗
📌:如果觉得文章对你有帮助可以点点关注 👉:专栏连接🔗
💃:程序员每天坚持锻炼💪
🔗:阅读文章
📋目录
提示:以下是本篇文章正文内容
爬虫🐛
什么是爬虫❓
- 网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。 通俗来讲,假如你需要互联网上的信息,如商品价格,图片视频资源等,但你又不想或者不能自己一个一个自己去打开网页收集,这时候你便写了一个程序,让程序按照你指定好的规则去互联网上收集信息,这便是爬虫,我们熟知的 百度,谷歌 等搜索引擎背后其实也是一个巨大的 爬虫 。
- 如果我们把互联网比作一张大的蜘蛛网,那一台计算机上的数据便是蜘蛛网上的一个猎物,而爬虫程序就是一只小蜘蛛,沿着蜘蛛网抓取自己想要的数据
解释1:通过一个程序,根据Url(爬取的链接)进行爬取网页,获取有用信息
解释2:使用程序模拟浏览器,去向服务器发送请求,获取响应信息
爬虫核心❓
- 爬取网页:爬取整个网页 包含了网页中所有得内容
- 解析数据:将网页中你得到的数据 进行解析
- 难点:爬虫和反爬虫之间的博弈
- 反爬策略:
1、以浏览器的形式访问
2、部署多个应用分别抓取,降低单节点频繁访问
……
爬虫的用途❓
- 12306抢票,网络投票等
- 通过爬虫爬取数据
- 去免费的数据网站爬取数据
……
爬虫分类❓
- 通用爬虫:
-
功能:
访问网页👉抓取数据👉数据存储👉数据处理👉获取数据
-
缺点
- 抓取的数据大多是无用的
- 不能根据用户的需求来精准获取数据
- 聚焦爬虫:
-
功能:
根据需求👉实现爬虫程序👉抓取需要的数据
-
设计思路
- 确定要爬取的url
如何获取Url❓ - 模拟浏览器通过http协议访问url,获取服务器返回的html代码
如何访问❓ - 解析html字符串(根据一定规则提取需要的数据)
如何解析❓
- 确定要爬取的url
- 增量式爬虫 (爬取更新的页面,新的信息)
- 深层网络爬虫(简而言之,提交表单的深层页面 构成:url列表,LVS列表,爬行控制器等)也是一些纲领性的内容,一定要有个底。
反爬的几种手段❓
-
User‐Agent:
User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。
-
代理IP:
- 简单的说,通过购买或使用免费(一般失败)ip代理,从不同的ip进行访问,这样就不会被封掉ip了。
- 什么是高匿名、匿名和透明代理?它们有什么区别?
1、使用透明代理,对方服务器可以知道你使用了代理,并且也知道你的真实IP。
2、使用匿名代理,对方服务器可以知道你使用了代理,但不知道你的真实IP。
3、使用高匿名代理,对方服务器不知道你使用了代理,更不知道你的真实IP。
-
验证码:
1、打码平台
2、云打码平台 -
JavaScript 参与运算,返回的是js数据 并不是网页的真实数据
- 解决方法:使用PhantomJS
- PhantomJS是一个可编程的无头浏览器.
- PhantomJS是一个Python包,他可以在没有图形界面的情况下,完全模拟一个浏览器,js脚本验证什么的再也不是问题了。
-
职业选手级别(代码混淆、动态加密方案、假数据,混淆数据等方式)
- 解决方法:持续对抗,直到对方放弃😀
-
赶紧爬起来👇🕷🕷🕷🕷🕷🕷
爬虫之Urllib的使用🐊
Python库的使用方法
使用Uellib爬取🔎源码
📰
如👇图所示爬取成功
这时ctrl+a 👉 ctrl+c 👉 ctrl+v 👉 如下所示😁
Response响应(一个类型 六个方法)
- Response相应(一个类型 六个方法)
- 类型:HTTPResponse
- 方法:read readline readlines getcode geturl getheaders
使用如下:
使用Urllib简单爬取图片、视频和🔎源码 (保存到本地)
📰
如下图(下载保存到本地):
爬虫之Urllib~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解析
- rrno:997 cookie失效
- errno:998 sign参数错误
- errno:999 post未提交from,to参数
- error:1000 需要翻译的字符串为空 # 记住,这个是error,也许是🔎发现自己的errno拼错了吧
爬虫之post 对比于 get
post VS get
- post请求的参数 必须要进行编码
- 编码后 必须调用encode方法
- post请求的参数是放在请求对象定制的参数中
import json
- Python json.loads()用法
- 参数:它接受一个字符串,字节或字节数组实例,该实例包含JSON文档作为参数。
- 返回:它返回一个Python对象。
普通的爬
普通爬如👇:
- 找规律
- 爬虫起始难度就在于找规律
- 如🔎翻译,当你输入每个字母时他都会发送一个参数到后台返回数据
- 这个参数就是kw,最终把kw当作参数就可以爬了😀( 其他类似)
- 接口URL如👇
📰演示:
如下图所示(爬取成功):
详细爬(Cookie反爬)
详细爬如👇:
- 接口&&参数
- 遇到Cookie反爬反扒(解决方法如👇):
-
手动处理
在开发手动捕获cookie,将其封装在headers中
应用场景:cookie没有有效时长且不是动态变化 -
自动处理
使用session机制
使用场景:动态变化的cookie
session对象:该对象和requests模块用法几乎一致.如果在请求的过程中产生了cookie,如果该请求使用session发起的,则cookie会被自动存储到session中
📰演示:
如下图所示(爬取成功):
最后
本文章到这里就结束了,觉得不错的请给我专栏点点订阅,你的支持是我们更新的动力,感谢大家的支持,希望这篇文章能帮到大家
下篇文章再见ヾ( ̄▽ ̄)ByeBye
相关文章
- Python爬虫之使用正则表达式抓取数据
- python爬虫知识点总结(十四)使用Redis和Flask维护Cookies池
- python爬虫知识点总结(九)Requests+正则表达式爬取猫眼电影
- How to run python interactive in current file's directory in Visual Studio Code? Python路径问题
- python基于request库,调用聊天机器人接口,request的几种方式汇总
- 地球引擎初级教程——Python API 语法(内涵JavaScript转python工具包介绍)
- 曾经的小白是怎样学Python入门爬虫的?
- 初学Python到月入过万最快的兼职途径(纯干货)
- 精通Python网络爬虫:核心技术、框架与项目实战.3.7 实例——metaseeker
- Access WMI via Python from Linux
- gyp ERR! stack Error: Can‘t find Python executable “python“, you can set the PYTHON env variable.
- python scrapy爬虫框架
- psnr的定义和python实现
- python实现线性排序-基数排序
- 《树莓派Python编程入门与实战(第2版)》——1.2 获取树莓派
- 《Python Cookbook(第3版)中文版》——1.6 在字典中将键映射到多个值上
- python列表切片
- macOS SwiftUI 组件之富文本编辑器支持Swift和Python语言高亮支持行数(教程含源码)
- (数据科学学习手札142)dill:Python中增强版的pickle
- python 爬虫 杂七杂八
- 基于Python的租房数据分析和房屋租赁爬虫 | 项目案例 | 大学生计算机专业毕业 | 毕业设计
- Python勒索软件来袭,国产杀软集体失身
- [Spark][Python]DataFrame where 操作例子
- python爬虫解决百度贴吧登陆验证码问题
- python 爬虫原理与数据抓取
- 《剑指offer》面试题15:二叉树的镜像(Python)
- Python当中的命令行参数sys.argv[]的使用方法
- (14)python网络编程,多线程socket(待写)
- python第十四课--排序及自定义函数之自定义函数(案例四)
- 【Linux】【压测】基于python Locust库实现自动化压测实践
- Python pyinstaller 打包 exe
- Python爬虫伪装
- 手把手教你用Python爬虫煎蛋妹纸海量图片