欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > python >内容正文

python

python url拼接_python学习笔记——urllib篇

发布时间:2025/3/15 python 33 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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篇的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。