Как извлечь некоторый текст из URL в Python

#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]