我有一个 url 列表如下:
urls = [
www.example.com?search?q=Term&page=0,
www.example.com?search?q=Term&page=1,
www.example.com?search?q=Term&page=2
]
其中 Term 可以是我们想要的任何术语:Europe
、London
等。
我的部分代码(在整个代码中)如下:
for url in urls:
file_name = url.replace('http://www.example.com/search?q=','').replace('=','').replace('&','')
file_name = file_name+('.html')
结果是:
Termpage0.html
Termpage1.html
and so on..
我怎样才能去掉 url 列表中的 Term,结果如下:
page0.html
page1.html
and so on?
最佳答案
你可以使用 urllib.parse
解析 URL,然后解析查询部分。这种方法的好处是,即使更改查询部分的顺序或添加新部分,它也能正常工作:
from urllib import parse
urls = [
'www.example.com?search?q=Term&page=0',
'www.example.com?search?q=Term&page=1',
'www.example.com?search?q=Term&page=2'
]
for url in urls:
parts = parse.urlparse(url)
query = parse.parse_qs(parts.query)
print('page{}.html'.format(query['page'][0]))
输出:
page0.html
page1.html
page2.html
在上面urlparse
返回包含 URL 组件的 ParseResult
对象:
>>> from urllib import parse
>>> parts = parse.urlparse('www.example.com/search?q=Term&page=0')
>>> parts
ParseResult(scheme='', netloc='', path='www.example.com/search', params='', query='q=Term&page=0', fragment='')
然后 parse_qs
将返回 dict
的查询参数,其中值为列表:
>>> query = parse.parse_qs(parts.query)
>>> query
{'page': ['0'], 'q': ['Term']}
关于python - 从 url 中去除随机字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41133414/