亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 Python 中僅打印特定鏈接

如何在 Python 中僅打印特定鏈接

桃花長相依 2023-05-23 19:14:00
我仍然是 Python 的新手,但我正在嘗試制作我的第一個小程序。我的意圖是僅打印以.m3u8結尾的鏈接(如果可用)而不是打印整個網頁。我目前使用的代碼:import requestschannel1 = requests.get('https://website.tv/user/111111')print(channel1.content)print('\n')channel2 = requests.get('https://website.tv/user/222222')print(channel2.content)print('\n')input('Press Enter to Exit...')我正在尋找的鏈接總是總共有 47 個字符,并且它總是相同的模型只是更改表示為 X 的流 id:https://website.tv/live/streamidXXXXXXXXX.m3u8誰能幫我?
查看完整描述

5 回答

?
qq_笑_17

TA貢獻1818條經驗 獲得超7個贊

您可以使用正則表達式來解決這個問題。


解釋:


在表達式部分。*?意味著考慮所有內容以及包含在 \b(expr)\b 中的任何內容都需要強制存在。


例如:


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


查看完整回答
反對 回復 2023-05-23
?
心有法竹

TA貢獻1866條經驗 獲得超5個贊

有幾種方法可以解決這個問題,一種讓我想起其他人已經觸及的方法是使用正則表達式,它從我們的.findallurl_list


另一個選擇也可以是BeautifulSoup,但如果沒有關于結構的更多信息,html它可能不是這里最好的工具。


使用正則表達式


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


查看完整回答
反對 回復 2023-05-23
?
元芳怎么了

TA貢獻1798條經驗 獲得超7個贊

試試這個,我認為這會很強大


import re


links=[re.sub('^<[ ]*a[ ]+.*href[ ]*=[ ]*',  '', re.sub('.*>$', '', link) for link in re.findall(r'<[ ]*a[ ]+.*href[ ]*=[]*"http[s]*://.+\.m3u8".*>',channel2.content)]


查看完整回答
反對 回復 2023-05-23
?
海綿寶寶撒

TA貢獻1809條經驗 獲得超8個贊

這將從網頁中提取所有 URL 并僅過濾那些包含所需關鍵字“.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 )


查看完整回答
反對 回復 2023-05-23
?
慕容708150

TA貢獻1831條經驗 獲得超4個贊

如果我正確理解你的問題,我認為你想使用 Python 的.split()字符串方法。如果您的目標是獲取一個類似的字符串"https://website.tv/live/streamidXXXXXXXXX.m3u8"并直接提取,"streamidXXXXXXXXX.m3u8"那么您可以使用以下代碼來實現:


web_address = "https://website.tv/live/streamidXXXXXXXXX.m3u8"

specific_file = web_address.split('/')[-1]

print(specific_file)

像這樣調用.split('/')字符串將返回一個字符串列表,其中列表中的每個項目都是字符串的不同部分(第一部分是"https:",等等)。其中最后一個(索引 [-1])將是您想要的文件擴展名。


查看完整回答
反對 回復 2023-05-23
  • 5 回答
  • 0 關注
  • 293 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號