python 中的 urlparse 模块

在写 精通Scrapy网络爬虫 中的案例时,在写关于使用 FilesPipeline 案例时发现作者写的两行代码不怎么明白意思,在这做下笔记

代码如下:

from scrapy.pipelines.files import FilesPipeline
from urllib.parse import urlparse
from os.path import basename, dirname, join


# 实现一个FilesPipeline的子类,覆写file_path方法来实现所期望的文件命名规则
class MyFilePipeline(FilesPipeline):
    def file_path(self, request, response=None, info=None):
        path = urlparse(request.url).path
        return join(basename(dirname(path)), basename(path))

python 中的 urlparse

urlparse模块主要是用于解析url中的参数  对url按照一定格式进行 拆分或拼接 

1.urlparse.urlparse

         将url分为6个部分,返回一个包含6个字符串项目的元组:协议、位置、路径、参数、查询、片段。

from urllib.parse import urlparse
url = 'https://matplotlib.org/mpl_examples/api/patch_collection.py '
print(urlparse(url))

结果如下:

ParseResult(scheme='https', netloc='matplotlib.org', path='/mpl_examples/api/patch_collection.py ', params='', query='', fragment='')

其中 scheme 是协议  netloc 是域名服务器  path 相对路径  params是参数,query是查询的条件

2.urlparse.urljoin

         将相对的地址组合成一个url,对于输入没有限制,开头必须是http://,否则将不组合前面。

from urllib.parse import urljoin
print(urljoin('http://www.xiaobai.com', 'sdasad'))
# 结果:http://www.xiaobai.com/sdasad

basename(), dirname(), join()

basename() # 去掉目录路径, 返回文件名, 
dirname() # 去掉文件名, 返回目录路径, 
join() # 将分离的各部分组合成一个路径名

案例:

from urllib.parse import urlparse
from os.path import basename, dirname, join

url = 'https://matplotlib.org/mpl_examples/api/patch_collection.py '
print(urlparse(url))
path = urlparse(url).path
print(dirname(path))
print(basename(dirname(path)))
print(basename(path))
print("返回结果:", join(basename(dirname(path)), basename(path)))

结果如下,结合上面方法的介绍,可以很容易知道结果是什么

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值