爬虫的简单步骤及urllib模块

本文介绍了Python爬虫的基本步骤,并详细讲解了urllib库,包括urllib.request、urllib.error、urllib.parse模块的使用。通过实例演示了如何使用urllib发送GET和POST请求,以及处理异常情况。
摘要由CSDN通过智能技术生成

一. 爬虫的步骤
(1)浏览器向DNS服务器请求解析该URL中的域名所对应的IP地址
(2)解析出IP地址后,根据IP地址和默认端口,和服务器建立TCP连接
(3)浏览器发出读取文件的http请求,该请求报文作为TCP三次握手的第三个报文的数据发送给服务器
(4)服务器对浏览器请求做出响应,并把对应的html文件发送给浏览器
(5)释放TCP连接
(6)浏览器将该HMTL渲染并显示内容

二. urllib库简介
(1)urllib库是python的标准库,提供了一系列用于操作url的功能,是模拟浏览器发送请求的库
(2)Urllib中的模块:
1.Urllib.request:用于打开和读取url
2.urllib.error:包含了request模块中各种错误的模块
3.urllib.parse:用于解析url
4.urllib.robotparse:解析网站robots.txt文件

三. urllib.request模块
1简介:urllib库中HTTP请求模块
2.常用方法:
1)urlopen():向服务器发送请求的方法,返回服务器的响应信息(response)
2)response对象方法:
(1)read():读取二进制格式网页内容
(2)geturl():获取url
(3)getheaders:获取响应头内容
(4)getcode():获取响应状态码

四. urllib实现数据采集的步骤
1.导入urllib.request模块
import urllib.request
2.使用urlopen()方法向服务器发送请求
response = urllib.request.urliopen(url)
3.获取响应数据
html = response .read().decode(网站编码)

五. urllib.parse模块
1.简介:urllib库中对url进行解析的模块
补充说明:url只能由特定的字符组成,字母/数字/下划线,如果出现其它字符,如$/空格/中文等则需对其进行编码
urllib.parse模块 : https://blog.csdn.net/qq_36148847/article/details/79153738
2. urlparse(url) :对url进行解析
3.url编码函数——quote与unquote:
1)quote():对url进行转码,将中文转化为%xxx的格式。
unquote():将url中%xxx格式转换为中文
2)urlencode(字典类型):实现url字符串拼接并对非法字符转码

六. urllib.error模块
1.简介:urllib.error可以接收有urllib.request产生的异常。
2.对应的类:
URLError/HTTPError
URLError是OSError的一个子类,
HTTPError是URLError的一个子类
3.引起URLError常见问题:
1)网络故障导致网络不通
2)服务器连接失败
3)找不到指定服务器,如:url错误
4.模拟URLError举例:
1)url错误——HTTP Error 403: Forbidden
2)断网测试——urlopen error [Error 11001] getaddrinfo failed
注意:当URLError与HTTPError同时捕获异常时,必须将HTTPError写在上面,如果URLError放在前面,出现HTTP异常会先响应URLError,这样HTTPError就捕获不到错误信息了

七. urllib库发送get请求
get请求:在url中显示关键词及对应的数据时,urllib向服务器发送请求使用get方式获取数据。
请求步骤:
1.对url进行解析并按照?进行分割
2.定义字典,将url中?后的属性名和属性值按照字典键值对格式存储在字典中
3.通过urllib中parse模块的urlencode()方法对字典数据进行解析
4.将url与解析后的数据进行拼接生产新的url
5.使用新url向服务器发送请求。

八. urllib库发送post请求
post请求:url中没有显式给出请求参数和参数值,需要使用抓包工具查看请求参数或在network中查看参数详情
请求步骤:
1.在network中的XHR中查看请求方式为post的headers中的Form Data参数。
2.将上面的参数以字典格式存储
3.使用urllib.parse解析库对字典中的数据进行解析
4.向服务器发送请求,将3中解析结果作为urlopen()中data参数的参数值传入。
5.读取网页数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值