python爬虫(一)urllib.request库学习总结

本文介绍了Python内置的urllib库中的request模块,包括简单介绍、实践操作如含参数访问、Request对象的使用,以及异常处理。还探讨了如何使用Handler处理HTTP错误、重定向、Cookies和代理,并介绍了urllib.parse模块在解析链接中的作用,如urlsplit、urljoin和urlencode等方法。此外,文章提到了异常处理,如URLError和HTTPError。

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

一.简单介绍

urllib库:是python的内置请求库,常用于网页的请求访问。
包括以下模块:
urllib.request 请求模块
urllib.error 异常处理模块
urllib.parse url解析模块
urllib.robotparser robots.txt解析模块

二.实践操作

(1)针对含参数访问

import urllib.request
import urllib.parse
import string
def get_method_params():
    url = "http://www.baidu.com/s?" 
    param = { #多个参数,利用字典的形式完成
        "wd":"中文",
        "key":"zhang",
        "value": "san"
    }
    # 将字典转换成参数形式的字符串
    result = str(param)
    # 这个方法可以将URL转化为计算机可以识别的状态,且多个参数之间补充&,补充=
    strpa = urllib.parse.urlencode(param)
    #拼接参数
    finurl = url + strpa
    # 将带有中文的url转化为可以识别的状态
    encode_url = urllib.parse.quote(finurl, safe=string.printable)  # 这里后面的参数是一个固定写法,用来保证原有的URL的状态
    #发送网络请求
    res = urllib.request.urlopen(encode_url)
    data = res.read().decode("utf-8")#获得爬取数据,根据网页编码方式进行解码
    print(data)
get_method_params()

可以看到完成网络请求的API是urllib.request.urlopen(),注意这里的param是访问请求的传入参数,是绑定在地址URL上的组成一个完整的URL。
详细参数情况如下:
1.url:传递访问的地址;
2.data:用于传递访问网页的必要参数,可选。如果要添加该参数,并且如果它是字节流编码格式的内容,即bytes类型,则需要通过bytes()方法转化。另外,如果传递了这个参数,则它的请求方式就不再是GET方式,而是POST方式。

import urllib.parse
import urllib.request
data = bytes(urllib.parse.urlencode({'word': 'hello'}), encoding='utf8')
print(data)
response = urllib.request.urlopen('http://httpbin.org/post', data=data)
print(response.read())

这里使用到了urllib的解析模块中的urlencode()这个API。要用urllib.parse模块里的urlencode()方法来将参数字典转化为字符串。实现转义。这里的参数是发送网络POST请求时携带的参数,与URL并不组成一体。
3.timeout:超时参数设置,可选。
4.其他参数
除了data参数和timeout参数外,还有context参数,它必须是ssl.SSLContext类型,用来指定SSL设置。
此外,cafile和capath这两个参数分别指定CA证书和它的路径,这个在请求HTTPS链接时会有用。
cadefa

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值