urllib.request模块使用

本文介绍了Python的urllib.request模块,用于实现HTTP客户端功能。重点讲解了如何使用request进行网页爬取,包括修改请求头以避免403错误,以及如何进行URL编码处理,确保非字母数字字符能正确传递。

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

urllib实现http客户端功能
urllib.request 最长用的模块,可以用了发送和获取request的结果

request用法案例

爬取网页

>>> from urllib import request
>>> url = 'http://www.qq.com'
#打开并爬取url定义的网页
>>> html = request.urlopen(url) 
#通过read读取
>>> html.readline()
b'<html>\n'
>>> html.read(20)
b'<head>\n<meta http-eq'
>>> html.readlines()

栗子: 将网页下载到本地

from urllib import request
import sys

def down(url, fname):
    #爬取url网页
    html = request.urlopen(url)

    #打开要存入的文件以'wb'方式打开,因为并不确定要存入的是文件还是图片等
    with open(fname, 'wb') as fobj:
        while 1:
            #以4096读取
            data = html.read(4096)
            #如果没有东西则break,有则写入
            if not data:
                break
            fobj.write(data)

if __name__ == '__main__':
    url = sys.argv[1]
    fname = sys.argv[2]
    down(url, fname)
修改请求头

如简书等网站,如果检测到请求头不正常会报403
那么我们可以修改请求头来骗过网站

from urllib import request
import sys

def down(url, fname):
    '修改请求头为火狐浏览器'
    heads = {'User-Agent': "Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0"}
    r = request.Request(url, headers=heads)
    # 爬取url网页
    html = request.urlopen(r)

    #打开要存入的文件以'wb'方式打开,因为并不确定要存入的是文件还是图片等
    with open(fname, 'wb') as fobj:
        while 1:
            #以4096读取
            data = html.read(4096)
            #如果没有东西则break,有则写入
            if not data:
                break
            fobj.write(data)

if __name__ == '__main__':
    url = sys.argv[1]
    fname = sys.argv[2]
    down(url, fname)
url编码

默认我们url只运行一部分编码,比如数字,字母,如果我们想写汉字是不被允许的,所以我们可以用 ’ request.quote()'来进行编码

>>> url = 'https://www.baidu.com/web?query=' + request.quote('运维开发')
>>> url
'https://www.sogou.com/web?query=%E5%85%83%E6%97%A6%E6%94%BE%E5%81%87'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值