2015-09-28 42 views
2

使用findAll会给出错误“TypeError:list indices must be integers,not str”,其中使用.find没有。使用findall会给出错误“TypeError:'NoneType'对象不可调用”。Python - 如何获取所有实例而不仅仅是页面上的第一个

什么是正确的方式来定位页面上有一类“框架”的所有链接,而不是只是第一个实例?

import requests 
from bs4 import BeautifulSoup 

url = ("http://www.gym-directory.com/listing-category/gyms-fitness-centres/") 
r = requests.get(url) 
soup = BeautifulSoup(r.text, 'html.parser') 
print soup.findAll("a",{"class":"frame"})["href"] 

url = ("http://www.gym-directory.com/listing-category/gyms-fitness-centres/page/2/") 
r = requests.get(url) 
soup = BeautifulSoup(r.text, 'html.parser') 
print soup.findAll("a",{"class":"frame"})["href"] 

url = ("http://www.gym-directory.com/listing-category/gyms-fitness-centres/page/3/") 
r = requests.get(url) 
soup = BeautifulSoup(r.text, 'html.parser') 
print soup.findAll("a",{"class":"frame"})["href"] 

url = ("http://www.gym-directory.com/listing-category/gyms-fitness-centres/page/4/") 
r = requests.get(url) 
soup = BeautifulSoup(r.text, 'html.parser') 
print soup.findAll("a",{"class":"frame"})["href"] 

url = ("http://www.gym-directory.com/listing-category/gyms-fitness-centres/page/5/") 
r = requests.get(url) 
soup = BeautifulSoup(r.text, 'html.parser') 
print soup.findAll("a",{"class":"frame"})["href"] 

url = ("http://www.gym-directory.com/listing-category/gyms-fitness-centres/page/6/") 
r = requests.get(url) 
soup = BeautifulSoup(r.text, 'html.parser') 
print soup.findAll("a",{"class":"frame"})["href"] 

url = ("http://www.gym-directory.com/listing-category/gyms-fitness-centres/page/7/") 
r = requests.get(url) 
soup = BeautifulSoup(r.text, 'html.parser') 
print soup.findAll("a",{"class":"frame"})["href"] 

url = ("http://www.gym-directory.com/listing-category/gyms-fitness-centres/page/8/") 
r = requests.get(url) 
soup = BeautifulSoup(r.text, 'html.parser') 
print soup.findAll("a",{"class":"frame"})["href"] 

url = ("http://www.gym-directory.com/listing-category/gyms-fitness-centres/page/9/") 
r = requests.get(url) 
soup = BeautifulSoup(r.text, 'html.parser') 
print soup.findAll("a",{"class":"frame"})["href"] 

回答

5

的问题是,soup.findAll()返回list,并且您试图访问与["href"]

该列表中,你需要做的是:

for elem in soup.findAll("a", {"class": "frame"}): 
    print elem["href"] 
相关问题