0

我有这个代码:

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']

当我运行这段代码时,它给了我很多下载链接。我怎样才能只获取给定的下载链接之一?

4

2 回答 2

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以获取所需的 url,或者仅使用索引来获取您的链接。无论哪种方式,这都比打印链接更灵活。例如,如果您不想完全安装,而只是想要一些其他软件包,或者可能是 XP 的软件包而不是 Vista、7 和 8(以您的网址为例)。

于 2013-10-24T07:56:46.493 回答
1
for d in soup.select("p.start-download [href]"):
        print d['href']
        break

将在第一个链接后停止

于 2013-10-24T07:43:32.300 回答