如何将findall结果附加到列表中?

时间:2013-01-11 11:20:41

标签: python beautifulsoup

我正在尝试为所有具有属性nofollow的链接解析网站。 我想打印那个列表,一个链接一个。 但是我没有将findall()的结果附加到我的列表box(我的尝试在括号中)。

我做错了什么?

import sys
import urllib2
from BeautifulSoup import BeautifulSoup


page = urllib2.urlopen(sys.argv[1]).read()
soup = BeautifulSoup(page)
soup.prettify()

box = []

for anchor in soup.findAll('a', href=True, attrs = {'rel' : 'nofollow'}):
#    box.extend(anchor['href'])
     print anchor['href']

# print box

1 个答案:

答案 0 :(得分:1)

您正在循环soup.findAll,因此每个anchor本身不是一个列表;使用.append()表示个别元素:

box.append(anchor['href'])

您还可以使用列表推导来获取所有href属性:

box = [a['href'] for a in soup.findAll('a', href=True, attrs = {'rel' : 'nofollow'})]