3 回答

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個(gè)贊
從你的開(kāi)始:
cleanedtitle1=url[58:]
這可行,但它可能對(duì)硬編碼數(shù)字不是很穩(wěn)健,所以讓我們從倒數(shù)第二個(gè)“/”之后的字符開(kāi)始。
您可以使用正則表達(dá)式來(lái)做到這一點(diǎn),但更簡(jiǎn)單地說(shuō),這可能看起來(lái)像:
pos1 = url.rindex("/") # index of last /
pos2 = url[:pos1].rindex("/") # index of second-to-last /
cleanedtitle1 = url[pos2 + 1:]
雖然實(shí)際上,您只對(duì)倒數(shù)第二個(gè)和最后一個(gè)之間的位感興趣/,所以讓我們更改使用pos1我們發(fā)現(xiàn)的中間值:
pos1 = url.rindex("/") # index of last /
pos2 = url[:pos1].rindex("/") # index of second-to-last /
cleanedtitle1 = url[pos2 + 1: pos1]
在這里,這給出了以下值cleanedtitle1
'Rembrandt_van_Rijn_-_Self-Portrait_-_Google_Art_Project.jpg'
現(xiàn)在到你的strip. 這不會(huì)完全符合您的要求:它會(huì)遍歷您提供的字符串,給出該字符串中的各個(gè)字符,然后刪除所有出現(xiàn)的每個(gè)字符。
因此,讓我們使用replace, 并將字符串替換為空字符串。
title = cleanedtitle1.replace("_-_Google_Art_Project.jpg", "")
然后我們也可以做類似的事情:
title = title.replace("_", " ")
然后我們得到:
'Rembrandt van Rijn - Self-Portrait'
把它放在一起:
pos1 = url.rindex("/")
pos2 = url[:pos1].rindex("/")
cleanedtitle1 = url[pos2 + 1: pos1]
title = cleanedtitle1.replace("_-_Google_Art_Project.jpg", "")
title = title.replace("_", " ")
return title
更新
我錯(cuò)過(guò)了一個(gè)事實(shí),即 URL 可能包含%2C我們希望替換的序列。
這些可以使用相同的方式完成replace,例如:
url = url.replace("%2C", ",")
但是您必須對(duì)所有可能出現(xiàn)的相似序列執(zhí)行此操作,因此最好unquote使用urllib. 如果在代碼的頂部放置:
from urllib.parse import unquote
那么你可以使用這些替換
url = unquote(url)
在其余處理之前:
from urllib.parse import unquote
def titleextract(url):
url = unquote(url)
pos1 = url.rindex("/")
pos2 = url[:pos1].rindex("/")
cleanedtitle1 = url[pos2 + 1: pos1]
title = cleanedtitle1.replace("_-_Google_Art_Project.jpg", "")
title = title.replace("_", " ")
return title

TA貢獻(xiàn)1765條經(jīng)驗(yàn) 獲得超5個(gè)贊
這應(yīng)該有效,讓我知道任何問(wèn)題
def titleextract(url):
title = url[58:]
if "Google_Art_Project" in title:
x = title.index("-_Google_Art_Project.jpg")
title = title[:x] # Cut after where this is.
disallowed_chars = "%" # Edit which chars should go.
# Python will look at each character in turn. If it is not in the disallowed chars string,
# then it will be left. "".join() joins together all chars still allowed.
title = "".join(c for c in title if c not in disallowed_chars)
title = title.replace("_"," ") # Change underscores to spaces.
return title

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超5個(gè)贊
有幾種方法可以做到這一點(diǎn):
如果您只想使用內(nèi)置的 python 字符串函數(shù),那么您可以首先根據(jù) 拆分所有內(nèi)容,/然后剝離所有 URL 的公共部分。
def titleextract(url):
cleanedtitle1 = url.split("/")[-1]
return cleanedtitle1[6:-4].replace('_',' ')
由于您已經(jīng)在使用 bs4 導(dǎo)入,您可以通過(guò)以下方式完成:
soup = BeautifulSoup(htmlString, 'html.parser')
title = soup.title.text
添加回答
舉報(bào)