我想获得下载链接。例如,在http://www.brothersoft.com/windows/top-downloads/
中所以预期的结果应该是:
List of url:
1. http://www.brothersoft.com/photoscape-64604.html
2. http://www.brothersoft.com/orbit-downloader-54366.html
3. ....
4. ...
till 100.
我试过这段代码:
import urllib
from bs4 import BeautifulSoup
pageFile = urllib.urlopen("http://www.brothersoft.com/windows/top-downloads/")
pageHtml = pageFile.read()
pageFile.close()
soup = BeautifulSoup("".join(pageHtml))
sAll = soup.findAll("a")
for i in range (0,100)
for link in sAll:
print i,link
但是输出不正确。 感谢
答案 0 :(得分:1)
首先,由于pageHtml已经是一个字符串,因此不需要BeautifulSoup("".join(pageHtml))
,因此您可以像BeautifulSoup(pageHtml)
一样直接使用它。
for i in range (0,100)
如果您正在使用Python 2(我认为您这样做,因为Python 3的urllib没有urlopen
),您应该使用xrange(100),它会更快一些,也不需要包含它如果从零开始计算,那么第一个零,所以xrange(100)就可以了。
此外,您有语法错误,range
和(0,100)
之间没有空格,并在其后直接添加:
。
最后,您的代码将只打印所有链接100次,这不是您需要的;如果你只需要前100个链接,你应该使用这样的东西:
for i in xrange(100):
print sAll[i]["href"]
这基本上是从0到100的列表,并迭代它,当前值在i
,然后它使用i
作为索引从{{1}检索数据数组(显然,如果sAll列表小于100,这将抛出KeyError异常),最后它会打印该项的“href”属性,即链接目标。
如果您还要打印该号码,可以改用sAll
。