Python爬虫:史上最详细的Python爬虫库urllib讲解,绝对经典,值得收藏

本文详细介绍了Python内置库urllib,包括request模块的GET和POST请求、超时处理、爬虫伪装和代理设置,还涉及Parse模块的URL处理、Cookie获取,以及Robots协议和异常处理。通过实例代码展示了如何使用urllib进行网络请求和数据处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网络库urllib

urllib库是Python3内置的HTTP请求库,不需要单独安装,默认下载的Python就已经包含了该库。

urllib库有4个模块:

  1. request:最基本的HTTP请求模块,可以用法发送HTTP请求,并接收服务器的响应数据,这个过程就像在浏览器地址栏输入URL一样。
  2. parse:工具模块,提供了很多处理URL的API,如拆分、解析、合并等。
  3. robotparser:用来识别网站的robots.txt文件,然后判断哪些网站可以抓取,哪些不能抓取。
  4. error:异常处理。如果出现请求错误,可以捕获这些异常,然后根据代码的需要,进行处理。

下面,我们来分别介绍urllib库这4个模块。

request

request模块,包含发送请求,获得响应,Cookie,代理等相关API。这里,我们分别来介绍其使用的方式。

发送GET请求

首先,我们一般进行爬虫程序编写时,开始都需要发送请求,然后获得响应进行处理。比如通过GET请求获取网页源代码,示例如下:

import urllib.request

response=urllib.request.urlopen("https://www.csdn.net/")
print(response.read().decode("UTF-8"))

如上面代码所示,运行之后,我们会得到网页html源代码。

获取网页源代码

这里response是一个HTTPResponse对象,调用它多种方法及其属性,就可以进行多样的处理。

比如,我们这里来获取CSDN首页,调用其属性及其方法,示例如下:

import urllib.request

response = urllib.request.urlopen("https://www.csdn.net/")
print("status:", response.status, "  msg:", response.msg, "  version:", response.version)
print(response.getheaders())

这里,我们输出了CSDN首页的响应状态码,响应消息以及HTTP版本的属性,同时也打印其完整的响应头信息。

属性与方法

发送POST请求

默认request.urlopen()函数发送的GET请求,如果需要发送POST请求,我们需要使用data命令参数,该参数类型是bytes。示例代码如下:

import urllib.request
import urllib.parse

data = bytes(urllib.parse.urlencode({
   'username': 'name', 'age': '123456'}), encoding="UTF-8")
response = urllib.request.urlopen("http://httpbin.org/post", data=data)
print(response.read().decode("UTF-8"))

运行之后,如果请求成功就会返回一大堆字符串数据。

效果

请求超时处理

在实际的爬虫项目中,我们都需要考虑一个关键的问题,那就是请求超时。如果请求网址因为长时间没有响应,那么卡在这里往往浪费大量的资源。

所以,我们需要设置一个超时时间,如果在限定的时间没有响应,就应该重新抓取,或者不在抓取。示例代码如下:

import urllib.request
import urllib.parse
import urllib.error
import socket

data = bytes(urllib.parse.urlencode({
   'username': 'name', 'age': '123456'}), encoding="UTF-8")
try:
    response = urllib
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李元静

您的鼓励就是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值