Я изучаю 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
Заранее спасибо за любую помощь, данные :)
Вы уверены, что результат 'soup.findAll (" div ", {" class ":" bookrealign "})' никогда не пуст? – L3viathan