5 回答
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']
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")
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)]
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 )
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])将是您想要的文件扩展名。
添加回答
举报