爬虫的第二天 urllib库+代理

编程入门 行业动态 更新时间:2024-10-06 22:22:46

<a href=https://www.elefans.com/category/jswz/34/1770264.html style=爬虫的第二天 urllib库+代理"/>

爬虫的第二天 urllib库+代理

今天介绍一下urllib库
写此本文只是为了巩固基础,写错或者不对的地方还请指点指点!

urllib库

urllib库是python中一个最基本的网络请求库。可以模拟浏览器的行为,向指定的服务器发送一个请求,并返回数据。

介绍一下urllib库中的一些函数

urlopen函数

python3urllib库中,所有的网络请求的方法,都被集到urllib.request模块下了。
基本使用:

from urllib import request
res = request.urlopen('')
print(res.read())

urlopen函数详解:
url:请求的网址。
data:请求的data,如果设置了这个值,那么将变成post请求。
返回值:返回值是一个http.client.HTTPResponse对象:有read()readline()readlines()getcode()等方法。

urlretrieve函数

这个函数可以方便的将网页的文件保存到本地。
代码示列:

from urllib import request
request.urlretrieve('','baidu.html')

urlencode函数

浏览器发送请求的时候,如果url中包含了中文或者其他特殊字符,那么浏览器会自动的给我们进行编码。
但是我们要用代码请求,那么就必须手动的进行编码,就用urlencode函数来实现。
代码示列

from urllib import parse
data = {'name':'tyler','age':100,'class':'共好学习'}
re = parse.urlencode(data)
print(re)
#结果
#name=tyler&age=100&class=%E5%85%B1%E5%A5%BD%E5%AD%A6%E4%B9%A0

parse_qs函数

可以将编码后的url参数进行解码。
拿上面的列子进行解码

from urllib import parse
data = {'name':'tyler','age':100,'class':'共好学习'}
re = parse.urlencode(data)
print(re)
#结果
# name=tyler&age=100&class=%E5%85%B1%E5%A5%BD%E5%AD%A6%E4%B9%A0
qw = parse.parse_qs(re)
print(qw)
#结果
# {'name': ['tyler'], 'age': ['100'], 'class': ['共好学习']}

urlparse函数和urlsplit函数

url中的各个组成部分进行分割。
两个函数基本上式一样的,唯一不一样的地方是urlparse里面多了一个params属性,而urlsplit没有这个params属性。比如有一个url为:url = ‘;hello?wd=python&username=abc#1’,
那么urlparse可以获取到hello,而urlsplit不可以获取到。url中的params也用得比较少。
代码示列

from urllib import parse,request
url = '/?from=bd-pc&plan=python-%E4%B8%BB%E8%A6%81%E6%B6%88%E8%B4%B9-%E5%90%8D%E8%AF%8D&unit=c&keyword=python&e_adposition=cl1&e_keywordid=106675892040&e_keywordid2=106675892040'
res1 = parse.urlsplit(url)
# res2 = parse.urlsplit(url)
print('scheme:',res1.scheme)
print('netloc:',res1loc)
print('path:',res1.path)
print('query:',res1.query)

request.Request类

有的时候我们用代码访问浏览器时,如果访问过于频繁,浏览器就认为是代码在访问,就不会再让你访问。你若还想访问的话,那么你就要把你的代码写的更像是在浏览器在浏览,比如添加一个请求头,那么就必须使用request.Request类来实现。
代码示列

from urllib import requestheaders = {
'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Mobile Safari/537.36'
}
req = request.Request("/",headers=headers)
resp = request.urlopen(req)
print(resp.read())

ProxyHandler处理器(代理)

1.代理的原理,在请求目的网站之前,先请求代理服务器,然后让代理服务器去请求目的网站,代理服务器
拿到目的网站的数据后,在转发给我们的代码。
2. : 这个网站可以方便查看http请求的参数。
3.在代码中代理的格式:
使用request.ProxyHandler
代理的格式是字典,字典的key是依赖于代理服务器能够接受的类型,一般是http,https,值是ip:port
代码示列:

from urllib import request
url = ''
#使用ProxyHandler ,传入代理 构建一个handler
handler = request.ProxyHandler({'HTTP':'121.232.148.180:9000'})
#使用上面创建handler构建一个open1
open1 = request.build_opener(handler)
#   使用open1去发送一个请求
res = open1.open(url)
print(res.read())

更多推荐

爬虫的第二天 urllib库+代理

本文发布于:2024-02-07 03:34:48,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1752984.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:爬虫   第二天   urllib

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!