Skip to main content
 首页 » 编程设计

Python从html中抓取所有链接并只显示链接

2025年05月04日8三少

我正在尝试使用以下语句从网页中获取标题:

titl1 = re.findall(r'<title>(.*?)</title>',the_webpage) 

使用它,我得到了 ['random webpage example1']。如何删除引号和括号?


我还尝试获取一组每小时更改的链接(这就是我需要通配符的原因):links = re.findall(r'(file=(.*?).mp3 )',the_webpage).

我明白了

[('file=http://media.kickstatic.com/kickapps/images/3380/audios/944521.mp3',  
  'http://media.kickstatic.com/kickapps/images/3380/audios/944521'),  
 ('file=http://media.kickstatic.com/kickapps/images/3380/audios/944521.mp3',  
  'http://media.kickstatic.com/kickapps/images/3380/audios/944521'),  
 ('file=http://media.kickstatic.com/kickapps/images/3380/audios/944521.mp3',  
  'http://media.kickstatic.com/kickapps/images/3380/audios/944521')] 

如何在没有 file= 的情况下获取 mp3 链接?


我还想下载 mp3 文件并在它们后面加上网站的标题以便显示

随机网页example1.mp3

我该怎么做?我仍在学习 Python 和正则表达式,这有点难倒我。

请您参考如下方法:

至少对于第 1 部分,你可以做到

>>> mytitle = title1[0] 
>>> print mytitle 
random webpage example1 

正则表达式返回匹配的字符串列表,因此您只需获取列表中的第一项。

同样,对于第二部分,正则表达式返回一个包含元组的列表。 你可以这样做:

>>> download_links = [href for (discard, href) in links] 
>>> print download_links 
['http://media.kickstatic.com/kickapps/images/3380/audios/944521', 'http://media.kickstatic.com/kickapps/images/3380/audios/944521', 'http://media.kickstatic.com/kickapps/images/3380/audios/944521']   

至于下载文件,使用urlib2(至少对于python 2.x,不确定python 3.x)。参见 this question了解详情。