如何将findall结果添加到列表中



我试图解析具有属性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

您正在循环soup.findAll,因此每个anchor本身不是一个列表;

使用.append()
box.append(anchor['href'])

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

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

最新更新