如何在 Python 中仅打印特定链接

我仍然是 Python 的新手,但我正在尝试制作我的第一个小程序。我的意图是仅打印以.m3u8结尾的链接(如果可用)而不是打印整个网页。我目前使用的代码:


import requests

channel1 = 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

谁能帮我?


桃花长相依
浏览 247回答 5
5回答

qq_笑_17

您可以使用正则表达式来解决这个问题。解释:在表达式部分。*?意味着考虑所有内容以及包含在 \b(expr)\b 中的任何内容都需要强制存在。例如:import relink="https://website.tv/live/streamidXXXXXXXXX.m3u8"p=re.findall(r'.*?\b.m3u8\b',link)print(p)输出:['https://website.tv/live/streamidXXXXXXXXX.m3u8']

心有法竹

有几种方法可以解决这个问题,一种让我想起其他人已经触及的方法是使用正则表达式,它从我们的.findallurl_list另一个选择也可以是BeautifulSoup,但如果没有关于结构的更多信息,html它可能不是这里最好的工具。使用正则表达式from re import findallfrom requests import getdef check_link(response):    result = findall(        r'.*?\b.m3u8\b',        str(response.content),    )    return resultdef 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")

元芳怎么了

试试这个,我认为这会很强大import relinks=[re.sub('^<[ ]*a[ ]+.*href[ ]*=[ ]*',&nbsp; '', re.sub('.*>$', '', link) for link in re.findall(r'<[ ]*a[ ]+.*href[ ]*=[]*"http[s]*://.+\.m3u8".*>',channel2.content)]

海绵宝宝撒

这将从网页中提取所有 URL 并仅过滤那些包含所需关键字“.m3u8”的 URLimport requestsimport redef get_desired_url(data):&nbsp; &nbsp; urls = []&nbsp; &nbsp; for url in re.findall(r'(https?://\S+)', data):&nbsp; &nbsp; &nbsp; &nbsp; if ".m3u8" in url:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; urls.append(url)&nbsp; &nbsp; return urlschannel1 = requests.get('https://website.tv/user/111111')urls = get_desired_url(channel1 )

慕容708150

如果我正确理解你的问题,我认为你想使用 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])将是您想要的文件扩展名。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python