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

parsing a url in python with changing part in it

我正在解析 Python 中的 url,您可以在下面找到示例 url 和代码,我想做的是将 (74743) 从url 并制作一个 for 循环,它将从零件清单中取出。 尝试使用 urlparse 但无法完成它,主要是因为 url 中的部分发生了变化。我只想要最简单快捷的方法。

示例 url:

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

(http://example.com/wps/portal) 始终固定

(lYuxDoIwGAYf6f9aqKSjMNQ) 总是在变化

(74743) 将取自列表名称 Parts

(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
>>> import urlparse

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

>>> split_url = urlparse.urlsplit(url)
>>> split_url.path
'/wps/portal/lYuxDoIwGAYf6f9aqKSjMNQ/'

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

>>> path = split_url.path
>>> path.split('/')
['', 'wps', 'portal', 'lYuxDoIwGAYf6f9aqKSjMNQ', '']

切掉最后两个:

>>> path.split('/')[:-2]
['', 'wps', 'portal']

并重新加入:

>>> '/'.join(path.split('/')[:-2])
'/wps/portal'

要解析查询,请使用 parse_qs:

>>> parsed_query = urlparse.parse_qs(split_url.query)
{'PartNo': ['74743']}

要保留空参数,请使用 keep_blank_values=True:

>>> query = urlparse.parse_qs(split_url.query, keep_blank_values=True)
>>> query
{'PartNo': ['74743'], 'is': [''], 'IntNumberOf': ['']}

然后可以修改查询字典:

>>> query['PartNo'] = 85731

并更新原来的split_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='