如何过滤并只采用一个下载链接?

时间:2013-10-24 07:37:30

标签: python python-2.7 beautifulsoup

我有这段代码:

import urllib
from bs4 import BeautifulSoup

url = "http://www.microsoft.com/en-us/download/confirmation.aspx?id=17851"
pageurl = urllib.urlopen(url)
soup = BeautifulSoup(pageurl)

for d in soup.select("p.start-download [href]"):
        print d['href']

当我运行此代码时,它给了我很多下载链接。 我怎样才能只获取一个下载链接?

2 个答案:

答案 0 :(得分:2)

如果您使用给定的代码,您将无法抓住链接并使用它们。请改用以下代码:

import urllib
from bs4 import BeautifulSoup

url = "http://www.microsoft.com/en-us/download/confirmation.aspx?id=17851"
pageurl = urllib.urlopen(url)
soup = BeautifulSoup(pageurl)

urls = []
for d in soup.select("p.start-download [href]"):
    urls.append(d.attrs['href'])

print urls[0]

如果您使用上面的代码,那么您可以在程序的其他部分使用链接本身。你也可以使用点亮的理解来做到这一点:

urls = [d['href'] for d in soup.select("p.start-download [href]")]

print urls[0]

然后,您可以遍历urls以获取所需的网址,或者只使用索引来获取您的链接。无论哪种方式,这比仅仅打印链接更灵活。例如,如果你不想完全安装,只是想要一些其他软件包或XP软件包而不是Vista,7和8(以你的网址为例)。

答案 1 :(得分:1)

for d in soup.select("p.start-download [href]"):
        print d['href']
        break

将在第一个链接后停止