5 回答

TA貢獻(xiàn)1818條經(jīng)驗 獲得超7個贊
您可以使用正則表達(dá)式來解決這個問題。
解釋:
在表達(dá)式部分。*?意味著考慮所有內(nèi)容以及包含在 \b(expr)\b 中的任何內(nèi)容都需要強(qiáng)制存在。
例如:
import re
link="https://website.tv/live/streamidXXXXXXXXX.m3u8"
p=re.findall(r'.*?\b.m3u8\b',link)
print(p)
輸出:
['https://website.tv/live/streamidXXXXXXXXX.m3u8']

TA貢獻(xiàn)1866條經(jīng)驗 獲得超5個贊
有幾種方法可以解決這個問題,一種讓我想起其他人已經(jīng)觸及的方法是使用正則表達(dá)式,它從我們的.findallurl_list
另一個選擇也可以是BeautifulSoup,但如果沒有關(guān)于結(jié)構(gòu)的更多信息,html它可能不是這里最好的工具。
使用正則表達(dá)式
from re import findall
from requests import get
def check_link(response):
result = findall(
r'.*?\b.m3u8\b',
str(response.content),
)
return result
def main(url):
response = get(url)
if response.ok:
link_found = check_link(response)
if link_found:
print('link {} found at {}'.format(
link_found,
url,
),
)
if __name__ == '__main__':
url_list = [
'http://www.test_1.com',
'http://www.test_2.com',
'http://www.test_3.com',
]
for url in url_list:
main(url)
print("All finished")

TA貢獻(xiàn)1798條經(jīng)驗 獲得超7個贊
試試這個,我認(rèn)為這會很強(qiáng)大
import re
links=[re.sub('^<[ ]*a[ ]+.*href[ ]*=[ ]*', '', re.sub('.*>$', '', link) for link in re.findall(r'<[ ]*a[ ]+.*href[ ]*=[]*"http[s]*://.+\.m3u8".*>',channel2.content)]

TA貢獻(xiàn)1809條經(jīng)驗 獲得超8個贊
這將從網(wǎng)頁中提取所有 URL 并僅過濾那些包含所需關(guān)鍵字“.m3u8”的 URL
import requests
import re
def get_desired_url(data):
urls = []
for url in re.findall(r'(https?://\S+)', data):
if ".m3u8" in url:
urls.append(url)
return urls
channel1 = requests.get('https://website.tv/user/111111')
urls = get_desired_url(channel1 )

TA貢獻(xiàn)1831條經(jīng)驗 獲得超4個贊
如果我正確理解你的問題,我認(rèn)為你想使用 Python 的.split()字符串方法。如果您的目標(biāo)是獲取一個類似的字符串"https://website.tv/live/streamidXXXXXXXXX.m3u8"并直接提取,"streamidXXXXXXXXX.m3u8"那么您可以使用以下代碼來實現(xiàn):
web_address = "https://website.tv/live/streamidXXXXXXXXX.m3u8"
specific_file = web_address.split('/')[-1]
print(specific_file)
像這樣調(diào)用.split('/')字符串將返回一個字符串列表,其中列表中的每個項目都是字符串的不同部分(第一部分是"https:",等等)。其中最后一個(索引 [-1])將是您想要的文件擴(kuò)展名。
添加回答
舉報