如何在Python中仅打印特定链接
我仍然是Python的新手,但我正在尝试制作我的第一个小程序。 我的目的是只打印以.m3u8结尾的链接(如果可用),而不打印整个网页。 我当前使用的代码:如何在Python中仅打印特定链接,python,python-requests,Python,Python Requests,我仍然是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') prin
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
有人能帮我吗?这将从网页中提取所有URL,并仅过滤包含所需关键字“.m3u8”的URL
如果我正确理解了您的问题,我想您应该使用Python的
.split()
string方法。如果您的目标是获取像这样的字符串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])将是您想要的文件扩展名。您可以使用正则表达式解决此问题
说明:
这里是表达式部分。*?意味着要考虑所有的东西,以及在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']
有几种方法可以实现这一点,一种是使用regex和
findall
从我们的url\u列表中返回匹配url列表的方法
另一个选项也可以是BeautifulSoup,但是如果没有更多关于html
结构的信息,它可能不是这里最好的工具
使用Regex
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")
试试这个,我想它会很结实
import re
links=[re.sub('^<[ ]*a[ ]+.*href[ ]*=[ ]*', '', re.sub('.*>$', '', link) for link in re.findall(r'<[ ]*a[ ]+.*href[ ]*=[]*"http[s]*://.+\.m3u8".*>',channel2.content)]
重新导入
links=[re.sub('^$','',link),用于re.findall(r'',channel2.content)中的链接]
import re
links=[re.sub('^<[ ]*a[ ]+.*href[ ]*=[ ]*', '', re.sub('.*>$', '', link) for link in re.findall(r'<[ ]*a[ ]+.*href[ ]*=[]*"http[s]*://.+\.m3u8".*>',channel2.content)]