Как извлечь текст из URL в Python - PullRequest
0 голосов
/ 28 марта 2019

Я пытаюсь заставить 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

Спасибо!

Ответы [ 4 ]

1 голос
/ 28 марта 2019

Если вы уверены, что (абсолютная) позиция имени в URL не изменится, тогда url.split('/')[5] решит вашу проблему.

0 голосов
/ 28 марта 2019

Вы можете сделать это с помощью регулярных выражений 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()
0 голосов
/ 28 марта 2019

Кажется, вы уже знаете о функции split .Вы можете использовать это в сочетании с нарезкой , чтобы получить то, что вам нужно.

skuName = input('url').split('/')[:-2]

Это приведет к появлению второго по последнему элементу в списке.Вы также можете искать 6-й элемент, используя.

skuName = input('url').split('/')[5]
0 голосов
/ 28 марта 2019

Если этот формат исправлен, вы можете просто разделить URL и получить доступ ко второму последнему элементу из полученного списка:

url = "https://somewebsite/images/products/SkuName/genricFileName.jpg"
skuName = url.split("/")[-2]

...