2016-05-22 3 views
0

Я пытаюсь очистить текст из серии гиперссылок на главной странице, а затем сохранить результаты в виде списка строковых объектов. Код, который я написал, работает, когда я выполняю его по отдельной ссылке, но он ломается, когда я пытаюсь перебирать все ссылки.Python Web Scraping, сбой в цикле

FYI, моя база URL выглядит следующим образом:

base_url = "http://www.achpr.org" 

И мои гиперссылок выглядеть следующим образом:

hyperlinks = ['/sessions/58th', 
'/sessions/58th/resolutions/337/', 
'/sessions/58th/resolutions/338/', 
'/sessions/58th/resolutions/339/', ...] 

Так это работает отлично:

r = requests.get('http://www.achpr.org' + "/sessions/19th-eo/resolutions/328/") 
    soup = BeautifulSoup(r.text, "lxml") 
    soup.find('b').span.string 
    text = soup.findAll('span') 

y = [] 
for i in text: 
    x = i.strings #returns string within tags 
    y.extend(x) 

y = "".join(y) 
y = y.replace("\n", " ") 
y = y.replace("\xa0*", " ") 
print(ok) 

Но когда я пытаюсь для его превращения в петлю:

output = [] 

for item in hyperlinks: 
    r = requests.get('http://www.achpr.org' + link) 
    soup = BeautifulSoup(r.text, "lxml") 
    soup.find('b').span.string 
    text = soup.findAll('span') 

    y = [] 
    for i in text: 
     x = i.strings #returns string within tags (so no tags) 
     y.extend(x) 

    y = "".join(y) 
    y = y.replace("\n", " ") 
    y = y.replace("\xa0*", " ") 
    output.extend(y) 

я получаю следующее сообщение об ошибке:

Error message

Такое ощущение, что я делаю очень простой ошибки выполняться цикл (кладя отступы в неправильном месте), но я смотрел на это слишком долго и мне бы хотелось увидеть свежую пару глаз. Может ли кто-нибудь определить, что я делаю неправильно?

ответ

1

Это не ошибка в отступлении, я полагаю.

for item in hyperlinks: 
    r = requests.get('http://www.achpr.org' + link) 
    soup = BeautifulSoup(r.text, "lxml") 
    if soup.find('b').span is None: 
     continue 
    soup.find('b').span.string 
    text = soup.findAll('span') 

Добавить, если тест до soup.find('b').span.string.

+0

Ahhhh спасибо! Так просто. – chickpeaze