爬虫学习-第四篇

首先感谢崔庆才博主的文章,以下信息都是在其文章与《python3网络爬虫开发实战》书中摘抄出的https://cuiqingcai.com

"""
Version: 0.1
Author: freshbin
Date: 2019年8月23日
"""

print("=================================处理异常 start================================================")

# 1 URLError
# from urllib import request, error
#
# try:
#     response = request.urlopen('https://mp.csdn.net/postedit/index.html')
# except error.URLError as e:
#     print(e.reason)

# HTTPError 是URLError的子类 有三个属性
# 1、code 返回状态码
# 2、reason 返回错误原因
# 3、headers 返回请求头

# from urllib import request, error
#
# try:
#     response = request.urlopen('https://mp.csdn.net/postedit/index.html')
# except error.HTTPError as e:
#     print(e.reason, e.code, e.headers, end='\n')
# except error.URLError as e:
#     print(e.reason)
# else:
#     print('Request Successfully')

# 返回的异常错误原因是一个对象
# import socket
# import urllib.request
# import urllib.error
#
# try:
#     response = urllib.request.urlopen('https://www.baidu.com', timeout=0.01)
# except urllib.error.URLError as e:
#     print(type(e.reason))
#     if isinstance(e.reason, socket.timeout):
#         print('TIME OUT')
print("=================================处理异常 end================================================")





print("=================================解析链接 start================================================")

# 1、urlparse
# from urllib.parse import urlparse
#
# result = urlparse('http://www.baidu.com/index.html;user?id=5#comment')
# print(type(result), result)
# 返回结果是一个ParseResult类型的对象,包含6个部分
# scheme:协议
# netloc:域名
# path:访问路径
# params:参数
# query:查询条件
# fragment:定位页面内部的下拉位置
# 一个标准的连接格式:scheme://netloc/path;params?query#fragment
# scheme参数只有在URL中不包含schemem信息时才生效,如果URL中有scheme信息,就会返回解析出的scheme
# allow_fragments=False时,#后面的会被归为他前面一类
# ParseResult是一个元组,可以通过索引顺序获取

# from urllib.parse import urlparse
#
# result = urlparse('http://www.baidu.com/index.html#comment', allow_fragments=False)
# print(result.scheme, result[0], result.netloc, result[1], result.path, result[2], sep='\n')

# 2、urlunparse()

# from urllib.parse import urlunparse
#
# data = ['http', 'www.baidu.com', 'index.html', 'user', 'a=6', 'comment']
# print(urlunparse(data))

# 3、urlsplit()
# urlsplit会把param的参数与访问路径的值合并
# urlsplit也是一个元组类型
# from urllib.parse import urlsplit

# result = urlsplit('http://www.baidu.com/index.html;user?id=5#comment')
# print(result)

# 4、urlunsplit()
# from urllib.parse import urlunsplit
#
# data = ['http', 'www.baidu.com', 'index.html;user', 'a=6', 'comment']
# print(urlunsplit(data))

# 5、urljoin()
# urljoin()包含两个参数,第一个参数base_url提供了scheme、netloc和path,里面包含的params、query和fragment不起作用
# 如果前面3项在新的连接不存在,则用base_url的值,如果新连接中存在,则用新连接的,新连接即为urljoin()的第二个参数

#6、urlencode()
# from urllib.parse import urlencode
#
# params = {
#     'name': 'germey',
#     'age': 22
# }
# base_url = 'http://www.baidu.com'
# url = base_url + urlencode(params)
# print(url)

# 7、parse_qs()
# 将参数转为字典
# from urllib.parse import parse_qs
#
# query = 'name=germey&age=22'
# print(parse_qs(query))

# 8、parse_qsl()
# 将参数转为列表,每个列表包含一个元组,元组的第一个内容是参数名,第二个内容是参数值
# from urllib.parse import parse_qsl
#
# query = 'name=germey&age=22'
# print(parse_qsl(query))


# 9、quote()
# 可以将内容转化为URL编码的格式,可以解决URL中文乱码问题
# from urllib.parse import quote
#
# keyword = '壁纸'
# url = 'https://www.baidu.com/s?wd=' + quote(keyword)
# print(url)

# 10、unquote()
# 可以对编码后的URL解码
from urllib.parse import unquote

url = 'https://www.baidu.com/s?wd=%E5%A3%81%E7%BA%B8'
print(unquote(url))

print("=================================解析链接 end================================================")

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值