python url拼接_python学习笔记——urllib篇
1 request模块:用于打开和读取 URL。
使用urllib.request.urlopen(url,data=None,[timeout,]*,cafile=None, capath=None, cadefault=False, context=None)方法便可以简单地把网页抓取下来。
import urllib.request
import sslssl._create_default_https_context = ssl._create_unverified_context
response = urllib.request.urlopen('https://www.baidu.com')
print(response.status)
正常run完代码以后,会打印出访问成功的状态码,也就是200。
(PS:ssl._create_default_https_context = ssl._create_unverified_context 这是为了全局取消证书验证。因为在python2.7.9之后每当urllib.urlopen请求一个https 的链接的时候,都会验证一次SSL证书。详细解析请看https://blog.csdn.net/moonhillcity/article/details/52767999。)
返回的response是一个HTTPResponse类型的对象。
(关于HTTPResponse类型的对象,在python官方文档里面介绍得很详细感兴趣的可以去看一下。https://docs.python.org/3/library/http.client.html)
除了必传参数‘url’以外,我们还有data,timeout,context,cafile,capath,cadefault这些参数。
data用于设置请求需要的参数。
timeout用于设置超时时间。
context用于SSL的设置,所以context里面接收的参数一定是ssl.SSLContext类型。
cafile和capath分别指定了CA证书和它的路径。
cadefault被弃用了,所以我们默认传False值。
2 parse模块:用于url的解析,合并,编码,解码 。
from urllib.parse import urlparse
o = urlparse('http://www.cwi.nl:80/%7Eguido/Python.html?data=data')
print(o)
使用urllib.parse.urlparse(urlstring,scheme ='',allow_fragments = True )方法把URL解析成为6个部分。
使用urllib.parse.urlunparse(parts)方法可以还原urllib.parse.urlparse分解出来的元组,使其从新拼接成为一个URL。
使用
urllib.parse.parse_qs(qs,keep_blank_values = False,strict_parsing = False,encoding ='utf-8',errors ='replace',max_num_fields = None )
方法解析URL查询模块query的参数,并返回字典。
使用
urllib.parse.parse_qsl(qs, keep_blank_values=False, strict_parsing=False, encoding='utf-8', errors='replace', max_num_fields=None)
方法解析URL查询模块query的参数,并返回列表。
import urllib.parse
url = "https://www.baidu.com?query=param"
url_change = urllib.parse.urlparse(url)
query = url_change.query
lst_query = urllib.parse.parse_qsl(query)
dict_query = urllib.parse.parse_qs(query)
print("使用parse_qsl返回列表 :", lst_query)
print("使用parse_qs返回字典 : ", dict_query)
urllib.parse.urlsplit(urlstring, scheme='', allow_fragments=True)方法和urllib.parse.urlparse方法的用法一致,和urllib.parse.urlparse不一样的地方在于urllib.parse.urlsplit方法没有params了。
使用urllib.parse.urlunsplit(parts)方法还原urllib.parse.urlsplit方法所解析的URL。
urllib.parse.urljoin(base, url, allow_fragments=True)方法用于URL的拼接。
import urllib.parse
print(urllib.parse.urljoin("https://www.baidu.com/hello.html","world.html"))
urllib.parse.urldefrag(url)方法用于识别fragment。
import urllib.parse
print(urllib.parse.urldefrag("http://www.baidu.com?query=arg#frag"))
urllib.parse.unwrap(url)方法用于把包装好的URL解析成普通的URL。(<URL:type://host/path> --> 'type://host/path')
import urllib.parse
print(urllib.parse.unwrap("<URL:http://www.baidu.com/2020/01/index.html>"))
3 error模块:定义了由request所引发的异常,而URLError是error模块的基础异常类。
import urllib.request
import urllib.error
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
try:res = urllib.request.urlopen('https://yichang.com/index.htm')
except urllib.error.URLError as e:print(e.reason)print(e.code)print(e.headers)
URLError类主要有reason错误原因,code状态码和headers请求头3个属性组成。
4 robotparser 模块:主要用于robots.txt的分析。
robots.txt简单地说,就是记录一个网站的哪些地方可以被爬虫爬,哪些地方不能被爬的一个文档。
import urllib.robotparser
rp = urllib.robotparser.RobotFileParser()
rp.set_url("http://www.musi-cal.com/robots.txt")
rp.read()
rrate = rp.request_rate("*")
rrate.requests
rrate.seconds
rp.crawl_delay("*")
rp.can_fetch("*", "http://www.musi-cal.com/cgi-bin/search?city=San+Francisco")
rp.can_fetch("*", "http://www.musi-cal.com/")
set_url(url)方法用于设置指向 robots.txt 文件的 URL。
read()方法用于读取 robots.txt URL 并将其输入解析器。
parse(lines)方法用于解析行参数。
can_fetch(useragent, url)方法用于如果允许 useragent 按照被解析 robots.txt 文件中的规则来获取 url 则返回 True。
mtime()方法用于返回最近一次获取 robots.txt 文件的时间。这适用于需要定期检查 robots.txt 文件更新情况的长时间运行的网页爬虫。
modified()方法用于将最近一次获取 robots.txt 文件的时间设置为当前时间。
crawl_delay(useragent)方法用于为指定的 useragent 从 robots.txt 返回 Crawl-delay 形参。如果此形参不存在或不适用于指定的 useragent 或者此形参的 robots.txt 条目存在语法错误,则返回 None。
request_rate(useragent)方法用于以 named tuple RequestRate(requests, seconds) 的形式从 robots.txt 返回 Request-rate 形参的内容。如果此形参不存在或不适用于指定的 useragent 或者此形参的 robots.txt 条目存在语法错误,则返回 None。
site_maps()方法用于以 list() 的形式从 robots.txt 返回 Sitemap 形参的内容。如果此形参不存在或者此形参的 robots.txt 条目存在语法错误,则返回 None。
python url拼接_python学习笔记——urllib篇相关推荐
- python tkinter 表格_python学习笔记(Tkinter编程利用Treeview实现表格自动更新)
博主今天总结这段时间抽空写的一个GUI编程项目 功能是查看本地打印机队列,可选择指定队列重新打印 直接上图 UI设计包括3个区域左上方,右上方和下方列表区域 使用网格grid方法来分配位置 下面是界面 ...
- python 坐标轴 单位刻度_Python学习笔记(matplotlib篇)--坐标轴刻度
python学习笔记--坐标轴刻度 所用的库及环境: ide:pycharm python环境:python3.7 matplotlib: matplotlib 1.11 numpy: nump ...
- python编程计算器_Python学习笔记:用Python开发一个计算器项目
最近抽空看了下python的学习文档,发现开发工具以及资料支持对开发者相当的友好,相比之下,以前用TCL&Tk做的项目主要缺点有两个:1,开发难度大,调试手段只有靠print一种,而且语法错误 ...
- python pow和**_Python学习笔记 | 实例3:天天向上的力量
本文为中国大学MOOC<Python语言程序设计>课程学习笔记,课程主讲:嵩天老师,练习平台:Python123,参考教材:<Python语言程序设计基础> 天天向上的力量 加 ...
- python eval 入门_Python学习笔记整理3之输入输出、python eval函数
Python学习笔记整理3之输入输出.python eval函数 来源:中文源码网 浏览: 次 日期:2018年9月2日 Python学习笔记整理3之输入输出.python eval函数 ...
- python分组求和_Python学习笔记之pandas索引列、过滤、分组、求和功能示例
本文实例讲述了Python学习笔记之pandas索引列.过滤.分组.求和功能.分享给大家供大家参考,具体如下: 前面我们已经把519961(基金编码)这种基金的历史净值明细表html内容抓取到了本地, ...
- python图形设置_python学习笔记——基本图形绘制
1.python蟒蛇python蟒蛇代码 #PythonDraw.py import turtle turtle.setup(650,350,200,200)# 设置画布的长.宽.起点 turtle. ...
- python dict遍历_Python学习笔记:19个pythonic编程习惯,让你的Python入门更优雅
Python最大的优点之一就是语法简洁,好的代码就像伪代码一样,干净.整洁.一目了然. 要写出 Pythonic(优雅的.地道的.整洁的)代码,需要多看多学大牛们写的代码,github 上有很多非常优 ...
- python通信信号处理_python学习笔记——信号模块signal(示例代码)
基于python学习笔记--多进程间通信--Linux信号基础的学习基础,进一步学习Python标准库中的signal模块. 尽管signal是python中的模块,但是主要针对UNIX平台(比如Li ...
最新文章
- 第三篇:时间和全局状态(三)
- How can I pretty-print JSON in python?
- 如何在Unity中播放影片
- 如何从一个表中选择另一个表中不存在的所有记录?
- 介绍一下Objective-c常用的函数,常数变量
- 治标不治本:POI Ptg错误的解决方法
- C++极值minmax最大值最小值算法(附完整源码)
- 设单链表中存放n个字符,试设计一个算法,使用栈推断该字符串是否中心对称...
- Flask爱家租房--celery(总结)
- 苹果CMS v10一键采集芒果tv官方直链地址插件
- springboot整合jpa_SpringBoot与SpringDataJPA整合 Ehcache
- UVA 188 Perfect Hash
- pca主成分分析结果解释_主成分分析(PCA)原理精讲 | 统计学专题
- numpy版本过高的解决方案
- 如何获取百度文库中的文章【原创】
- Linux安装redis数据库
- 易宝支付 CTO 陈斌:如何做一个好的 CTO
- 怎么将多张图片打印在一张A4纸上?
- latex中求和符号的条件的换行处理
- 2019上半年软件设计师 下午真题-简答题及免费答案(一)