从 url 个链接列表中解析文件名
Parsing the file name from list of url links
好的,所以我正在使用从 urls.txt 中列出的 URL 下载文件的脚本。
import urllib.request
with open("urls.txt", "r") as file:
linkList = file.readlines()
for link in linkList:
urllib.request.urlretrieve(link)
不幸的是,由于我的 urllib.request.urlretrieve 函数中缺少第二个参数,它们被保存为临时文件。由于我的文本文件中有数千个链接,因此无法单独命名它们。问题是文件名包含在这些链接中,即 /DocumentXML2XLSDownload.vm?firsttime=true&repengback=true&d ocumentId=XXXXXX&xsl FileName=rher2xml.xs l&outputFileName=XXX X_2017_06_25_4.xls 其中文件名位于 outputFileName=
之后
有没有一种简单的方法来解析文件名,然后在 urllib.request.urlretrieve 函数中将它们用作辅助参数?我正在考虑在 excel 中提取这些名称并将它们放在另一个文本文件中,该文件将以与 urls.txt 类似的方式读取,但我不确定如何在 Python 中实现它。或者有没有办法在不使用 excel 的情况下在 python 中独占?
您可以使用 urlparse 和 parse_qs 来获取查询字符串
from urlparse import urlparse,parse_qs
parse = urlparse('http://www.cwi.nl:80/%7Eguido/Python.html?name=Python&version=2')
print(parse_qs(parse.query)['name'][0]) # prints Python
您可以随时随地解析 link。
使用 regular expression 的示例:
import re
with open("urls.txt", "r") as file:
linkList = file.readlines()
for link in linkList:
regexp = '((?<=\?outputFileName=)|(?<=\&outputFileName=))[^&]+'
match = re.search(regexp, link.rstrip())
if match is None:
# Make the user aware that something went wrong, e.g. raise exception
# and/or just print something
print("WARNING: Couldn't find file name in link [" + link + "]. Skipping...")
else:
file_name = match.group(0)
urllib.request.urlretrieve(link, file_name)
好的,所以我正在使用从 urls.txt 中列出的 URL 下载文件的脚本。
import urllib.request
with open("urls.txt", "r") as file:
linkList = file.readlines()
for link in linkList:
urllib.request.urlretrieve(link)
不幸的是,由于我的 urllib.request.urlretrieve 函数中缺少第二个参数,它们被保存为临时文件。由于我的文本文件中有数千个链接,因此无法单独命名它们。问题是文件名包含在这些链接中,即 /DocumentXML2XLSDownload.vm?firsttime=true&repengback=true&d ocumentId=XXXXXX&xsl FileName=rher2xml.xs l&outputFileName=XXX X_2017_06_25_4.xls 其中文件名位于 outputFileName=
之后有没有一种简单的方法来解析文件名,然后在 urllib.request.urlretrieve 函数中将它们用作辅助参数?我正在考虑在 excel 中提取这些名称并将它们放在另一个文本文件中,该文件将以与 urls.txt 类似的方式读取,但我不确定如何在 Python 中实现它。或者有没有办法在不使用 excel 的情况下在 python 中独占?
您可以使用 urlparse 和 parse_qs 来获取查询字符串
from urlparse import urlparse,parse_qs parse = urlparse('http://www.cwi.nl:80/%7Eguido/Python.html?name=Python&version=2') print(parse_qs(parse.query)['name'][0]) # prints Python
您可以随时随地解析 link。
使用 regular expression 的示例:
import re
with open("urls.txt", "r") as file:
linkList = file.readlines()
for link in linkList:
regexp = '((?<=\?outputFileName=)|(?<=\&outputFileName=))[^&]+'
match = re.search(regexp, link.rstrip())
if match is None:
# Make the user aware that something went wrong, e.g. raise exception
# and/or just print something
print("WARNING: Couldn't find file name in link [" + link + "]. Skipping...")
else:
file_name = match.group(0)
urllib.request.urlretrieve(link, file_name)