2016-05-13 2 views
0

Я изучаю Python, и я решил немного научиться программированию, пытаясь создать программу, которая могла бы исследовать текст на сайте «Вавилонская библиотека» (https://libraryofbabel.info/)Python 3 | Красивый суп для цикла, переменная не назначена

Я использую BeautifulSoup для получения фактического текста из HTML-кода, и затем я использую регулярные выражения для поиска того, что ищу, в этом случае я тестировал его только с помощью leter «а». Но по какой-то причине код дает ошибку и говорит, что переменная, которую я ищу «a», не назначена.

Код:

import re 
import requests 
from bs4 import BeautifulSoup 

url = "https://libraryofbabel.info/browse.cgi" 
pages,data=[],[] 

r = requests.get(url) 
r = r.text 

soup = BeautifulSoup(r,"html.parser") 

for text in soup.findAll("li",{"onclick":"gethexfromlist(this.innerHTML); enterhex();"}): 
    page = text.string 
    pages.append(page) 

for eachRoom in pages: 
    url = "https://libraryofbabel.info/browse.cgi?" + eachRoom 
    for eachWall in range(1,5): 
     url = url + "-w" + str(eachWall) 
     for eachShelf in range(1,6): 
      url = url + "s-" + str(eachShelf) 
      for eachVolume in range(1,33): 
       if len(str(eachVolume)) == 1: 
        url = url + "-v0" + str(eachVolume) 
       else: 
        url = url + "-v" + str(eachVolume) 
        for eachPage in range(1,411): 
         url = url + ":" + str(eachPage) 
         r = requests.get(url) 
         r = r.text 
         soup = BeautifulSoup(r,"html.parser") 
         for text in soup.findAll("div",{"class":"bookrealign"}): 
          rdata = text.string 
         if data == []: 
          data = re.findall(r"a",rdata) 
         else: 
          break 

Ошибка:

Traceback (most recent call last): 
    File "C:\Users\...", line 37, in <module> 
    data = re.findall(r"a",rdata) 
NameError: name 'rdata' is not defined 

Заранее спасибо за любую помощь, данные :)

+0

Вы уверены, что результат 'soup.findAll (" div ", {" class ":" bookrealign "})' никогда не пуст? – L3viathan

ответ

1

Ваш, если находится вне петли и soup.findAll("div",{"class":"bookrealign"}) находит ничего так RDATA никогда не определяется.

Смежные вопросы