#python #parsing #url #hyperlink
#python #синтаксический анализ #url #гиперссылка
Вопрос:
Я пытаюсь заставить python извлечь некоторый текст из строки URL.
Вот пример URL https://somewebsite/images/products/SkuName/genricFileName.jpg
SkuName всегда будет идти после 5-го «/» и закончится 6-м «/»
Я хотел бы извлечь ‘SkuName’
import urllib.request
images = input('please enter url list separated by ","')
names = input('please enter images names separated by ","')
images = images.split(',')
names = names.split(',')
for index, image in enumerate(images):
urllib.request.urlretrieve(image, "images/{}.jpg".format(names[index]))
print('images downloaded successfully')
Как вы можете видеть, пользователь должен вручную ввести имя SKU (которое находится в переменной ‘names’)
Я бы хотел, чтобы пользователь вводил только один ввод (URL), и python автоматически извлекал SKUName из строки URL
Спасибо!
Ответ №1:
Если вы уверены, что (абсолютная) позиция имени в URL не изменится, то url.split('/')[5]
это должно решить вашу проблему.
Комментарии:
1. Я не уверен, как реализовать это в mycode .. для индекса, изображение в enumerate (изображения): urllib.request.urlretrieve (изображение, «temp /{}.jpg».format (image.split(‘/’)[:-2]))
Ответ №2:
Вы можете сделать это с помощью регулярных выражений Python. Примечание: измените шаблон в соответствии с вашим URL
import re
url = 'https://somewebsite/images/products/SkuName/genricFileName.jpg'
pattern = re.compile(r'(?<=(https://somewebsite/images/products/)).*(?=/genricFileName.jpg)', re.I)
sku_name = pattern.search(url).group()
Ответ №3:
Если этот формат исправлен, вы можете просто разделить URL и получить доступ к предпоследнему элементу из результирующего списка:
url = "https://somewebsite/images/products/SkuName/genricFileName.jpg"
skuName = url.split("/")[-2]
Ответ №4:
Кажется, вы уже знаете о функции split. Вы можете использовать это в сочетании с нарезкой, чтобы получить то, что вам нужно.
skuName = input('url').split('/')[:-2]
Это приведет к получению предпоследнего элемента в списке. Вы также можете выполнить поиск 6-го элемента с помощью.
skuName = input('url').split('/')[5]