如何在Python中从网址中提取一些文本

时间:2019-03-28 14:34:40

标签: python parsing url hyperlink

我正在尝试让python从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名称(位于变量“名称”下)

我希望用户仅输入一个输入(URL),然后python自动从URL字符串中提取SKUName

谢谢!

4 个答案:

答案 0 :(得分:1)

如果您确定名称在URL中的(绝对)位置不会改变,那么url.split('/')[5]应该可以解决您的问题。

答案 1 :(得分:0)

如果该格式是固定的,则可以拆分URL并从结果列表中访问倒数第二个元素:

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

答案 2 :(得分:0)

您似乎已经意识到split函数。您可以将其与slicing结合使用,以获取所需的内容。

singlelist = ( model.getfirstlist().getItems() +
model.getSecondlist().getItems())
setListData(singlelist);

这将产生列表中倒数第二个元素。您也可以使用搜索第六个元素。

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

答案 3 :(得分:0)

您可以使用python regex做到这一点。 注意:根据您的网址更改模式

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()