您的位置:首页 > Web前端 > HTML

Chapter 13:Understanding HTML&Assignment(2)

2016-04-01 19:07 375 查看
先贴代码,这个任务主要是抽取链接到其他页面的超链接,然后进入,在抽取,再进入。如此反复。(抽取几次代码中是根据用户输入的次数决定)

import urllib
from BeautifulSoup import *

lst=list()
i=0
url = raw_input('Enter url:')
count=raw_input('Enter count:')
position=raw_input('Enter position:')

def crawl(url):
html = urllib.urlopen(url).read()
soup = BeautifulSoup(html)
tags = soup('a')
for tag in tags:
lst.append(tag.get('href', None))
#    url = lst[int(position)-1]

for i in range(int(count)+1):
print url
crawl(url)
url = lst[int(position)-1]
lst=[]


我用的是def一个函数然后递归调用的方法。

这次主要遇到的两个问题,

一个是构造的list,在每次进入函数时应该将它清零,否则输出的url将一直是第一次的。(因为其他的会被append()到后面)

二是关于能否在函数中修改传入的参数(本例中为url)的值,在这个例子中是不可以(参见crawl()中我注释掉的那行),但是我还没找到原因,如果在函数中修改url的值,同样一直输出第一次找到的url。

*python中设定要几次循环的方法:

for i in range(4)


则i会从0循环到3
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: