爬虫学习

Posted on 2019-11-10 17:12  郑幸福  阅读(125)  评论(0编辑  收藏  举报

urllib 库

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

urlopen函数:

在使用python3的urllib库中,所有和网络请求相关的方法,都被集到urllib.request模块下面了, 先来看一下urlopen函数的基本使用:

 

1 from urllib import request
2 resp = request.urlopen("http://baidu.com")
3 print(resp.read())

 

urlretrieve函数:

这个函数 可以很方便的将网页上的一个文件保存到本地,代码如下:

1 from urllib import request 
2 request.urlreyrieve("http://www.baidu,com", "baidu.html")

urlencode函数:

用浏览器发送请求的时候,如果url中包含了中文,或者特殊的字符串,那么浏览器会自动给我们进行编码,而如果使用代码发送请求,那么就必须手动进行编码,这时候就应该使用urlencode函数来实现,urlencode可以把字典数据转换为url编码的数据。示例代码如下: 

from  urllib import parse

params = {'name': "张三", "age":18, "greed":"hello world"} result = parse.urlencode(params) print(result)

 

 

 parse_qs函数的用法:

from  urllib import parse



params = {'name': "张三", "age":18, "greed":"hello world"}
result = parse.urlencode(params)
#parse_qs 函数的用法:
cc = parse.parse_qs(result)
print(cc)

urlparse和urlsplit:

有时候拿到一个url,, 想要对这个url 中的各个组成部分进行分割,那么这时候就可以使用urlparse 或者是urlsplit来进行分割, 示例代码如下:

from urllib import parse
url = "http://www.baidu.com/s?wd=python&username-abc#1"
result = parse.urlparse(url)
result = parse.urlparse(url)
print("scheme:", result.scheme)
print("netloc:", result.netloc)
print("path:", result.path)
print("params:", result.params)
print("query:", result.query)
print("fragment:", result.fragment)

#urlsplit的用法
url = "http://www.baidu.com/s?wd=python&username-abc#1"
result = parse.urlsplit(url)
print("scheme:", result.scheme)
print("netloc:", result.netloc)
print("path:", result.path)
#print("params:", result.params) 没有这个parsms
print("query:", result.query)
print("fragment:", result.fragment)