Yan*_*ran 3 python replace strip
我有一个网址列表如下:
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
]
Run Code Online (Sandbox Code Playgroud)
凡期限可能是我们想要的任何条件:Europe,London,等.
我的代码部分(在整个代码中)如下:
for url in urls:
file_name = url.replace('http://www.example.com/search?q=','').replace('=','').replace('&','')
file_name = file_name+('.html')
Run Code Online (Sandbox Code Playgroud)
这导致:
Termpage0.html
Termpage1.html
and so on..
Run Code Online (Sandbox Code Playgroud)
如何将URL列表中的Term删除为:
page0.html
page1.html
and so on?
Run Code Online (Sandbox Code Playgroud)
您可以使用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]))
Run Code Online (Sandbox Code Playgroud)
输出:
page0.html
page1.html
page2.html
Run Code Online (Sandbox Code Playgroud)
在上面urlparse返回ParseResult包含URL组件的对象:
>>> 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='')
Run Code Online (Sandbox Code Playgroud)
然后parse_qs将返回dict值为列表的查询参数:
>>> query = parse.parse_qs(parts.query)
>>> query
{'page': ['0'], 'q': ['Term']}
Run Code Online (Sandbox Code Playgroud)