在python中解析url并更改其中的部分

在python中解析url并更改其中的部分,python,parsing,url,split,urlparse,Python,Parsing,Url,Split,Urlparse,我正在用Python解析一个url,下面您可以找到一个示例url和代码,我要做的是从url中拆分(74743)并生成一个for循环,该循环将从部件列表中获取它。 尝试使用urlparse,但由于url中的部分不断变化,无法完成它。我只是想用最简单最快的方法来做这件事 示例url: http://example.com/wps/portal/lYuxDoIwGAYf6f9aqKSjMNQ/?PartNo=74743&IntNumberOf=&is= ()总是固定的 (lYuxDo

我正在用Python解析一个url,下面您可以找到一个示例url和代码,我要做的是从url中拆分(74743)并生成一个for循环,该循环将从部件列表中获取它。 尝试使用urlparse,但由于url中的部分不断变化,无法完成它。我只是想用最简单最快的方法来做这件事

示例url:

http://example.com/wps/portal/lYuxDoIwGAYf6f9aqKSjMNQ/?PartNo=74743&IntNumberOf=&is=
()总是固定的

(lYuxDoIwGAYf6f9aqKSjMNQ)总是在变化

(74743)将取自零件名称列表

(IntNumberOf=&is=)也会根据 网站

代码如下:

from lxml import html
import requests
import urlparse


Parts = [74743, 85731, 93021]

url = 'http://example.com/wps/portal/lYuxDoIwGAYf6f9aqKSjMNQ/?PartNo=74743&IntNumberOf=&is='

parsing = urlparse.urlsplit(url)

print parsing
可以使用“/”将路径拆分为字符串列表,对列表进行切片,然后重新联接:

>>> path = split_url.path
>>> path.split('/')
['', 'wps', 'portal', 'lYuxDoIwGAYf6f9aqKSjMNQ', '']
>>> '/'.join(path.split('/')[:-2])
'/wps/portal'
切掉最后两个:

>>> path.split('/')[:-2]
['', 'wps', 'portal']
并重新加入:

>>> path = split_url.path
>>> path.split('/')
['', 'wps', 'portal', 'lYuxDoIwGAYf6f9aqKSjMNQ', '']
>>> '/'.join(path.split('/')[:-2])
'/wps/portal'
要分析查询,请使用parse_qs:

>>> parsed_query = urlparse.parse_qs(split_url.query)
{'PartNo': ['74743']}
要保留空参数,请使用
保留为空\u values=True

>>> query = urlparse.parse_qs(split_url.query, keep_blank_values=True)
>>> query
{'PartNo': ['74743'], 'is': [''], 'IntNumberOf': ['']}
然后可以修改查询字典:

>>> query['PartNo'] = 85731
并更新原始拆分url:

>>> updated = split_url._replace(path='/'.join(base_path.split('/')[:-2] +
                                              ['ASDFZXCVQWER', '']),
                                query=urllib.urlencode(query, doseq=True))

>>> urlparse.urlunsplit(updated)
'http://example.com/wps/portal/ASDFZXCVQWER/?PartNo=85731&IntNumberOf=&is='

你以什么方式不能“完成它到底”?只想忽略url的变化部分,并从部分中获取编号(74743)。是的,但你为什么不能完成它?对于基本路径,如果我有两个以上的“/”。。。喜欢(/wps/portal/ut/p/c1/lYuxDoIwGAYf6f9aqKSjMNQ/,我该怎么处理?@T.M什么url?你试过代码了吗?如果你有其他问题,问一个新问题。首先阅读,特别是关于如何创建的部分。很抱歉,我的计算机被卡住了。谢谢,谢谢。但是有了这个url,基本路径的url:'url=''没有给我任何帮助,它给了我一个错误(更新的)“无效语法”抱歉,我没有考虑就使用了os.path.basename。我用一个使用str.split的示例替换了它。谢谢,第一部分效果很好,但是“更新的”给了我一个回溯…回溯(最近一次调用):文件“solving_url_issue2.py”,第41行,在updated=split\u url.\u update(path='/'.join(base\u path.split('/'))[:-2]+AttributeError:'SplitResult'对象没有属性'\u update'..试图为其找到解决方案,但没有找到任何。。