【技术分享】Python中URL处理的常见问题及解决方案,值得收藏!.docxVIP

【技术分享】Python中URL处理的常见问题及解决方案,值得收藏!.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

【技术分享】Python中URL处理的常见问题及解决方案,值得收藏!

URL处理在Python编程中经常遇到,可惜很多人都会踩坑。今天咱们就来聊聊这个话题,

看看有哪些常见问题,怎么解决。别担心,我会用简单的例子帮你理解,保证你看完就能用!

URL解析

URL解析是个基本功,得先掌握。

Python标准库里的urllib.parse模块就是专门干这个的。

???

1fromurllib.parseimporturlparse

2

3url=“https:///path/to/page?

name=value#section”4parsed_url=urlparse(url)56print(parsed_url.scheme)#https7print(parsed_loc)#8print(parsed_url.path)#/path/to/page9print(parsed_url.query)#name=value10print(parsed_url.fragment)#section

urlparse函数把URL拆成几个部分,方便你单独处理每个部分。这在提取特定信息时特别有用。

温馨提示:别把urlparse和parse_url搞混了,这两个可不一样!

URL编码解码

URL中有些字符是不允许直接使用的,比如空格、中文等。

这时候就需要URL编码了。

???

1fromurllib.parseimportquote,unquote

2

3#URL编码

4original=“Hello世界”

5encoded=quote(original)

6print(encoded)#Hello%20%E4%B8%96%E7%95%8C

7

8#URL解码

9decoded=unquote(encoded)

10print(decoded)#Hello世界

quote函数把不安全的字符转换成百分号编码,unquote则是反过来。这两个函数用好了,

中文URL的问题就迎刃而解了。

拼接URL

有时候你可能需要把几个URL片段拼起来,别以为直接用加号就行了,那样容易出错。

用urljoin函数才是正确姿势:

???

1fromurllib.parseimporturljoin

2

3base=“https:///foo/”

4relative=“bar”

5

6full_url=urljoin(base,relative)

7print(full_url)#https:///foo/bar

urljoin会自动处理斜杠问题,让你不用操心URL是否格式正确。

处理查询参数

URL中的查询参数常常需要单独处理。

parse_qs和urlencode函数就是干这个的:

???

1fromurllib.parseimportparse_qs,urlencode

2

3#解析查询字符串

4query=“name=Johnage=30”

5params=parse_qs(query)

6print(params)#{name:[John],age:[30]}

7

8#构造查询字符串

9new_params={city:NewYork,country:USA}

10new_query=urlencode(new_params)

11print(new_query)#city=New+Yorkcountry=USA

这两个函数一个把查询字符串变成字典,一个把字典变成查询字符串,配合起来用简直不要太方便。

实际应用场景

说了这么多,来点实际的吧。

假设你在做一个网络爬虫,需要处理各种URL:

???

1fromurllib.parseimporturlparse,urljoin,quote

2

3defclean_url(url):

4parsed=urlparse(url)

5base=f“{parsed.scheme}://{loc}”

6path=quote(parsed.path)

7returnurljoin(base,path)

8

9urls=[

10“https:///搜索结果”,

11“http:///page?

q=Python编程”,12“https:///posts/url处理”13]1415forurlinurls:16print(clean_url(url))

您可能关注的文档

文档评论(0)

百科文库 + 关注
实名认证
文档贡献者

通信资料

1亿VIP精品文档

相关文档