Chapter 13:Understanding HTML&Assignment(2)

来源:互联网 发布:小米淘宝旗舰店优惠券 编辑:程序博客网 时间:2024/04/28 12:21

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

import urllibfrom BeautifulSoup import *lst=list()i=0url = 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

0 0
原创粉丝点击