【问题标题】:Python 3 | Beautiful Soup For Loop, Variable not assigned蟒蛇 3 |美丽的汤循环,未分配变量
【发布时间】:2016-05-13 23:44:49
【问题描述】:

我正在学习 Python,我决定通过尝试制作一个可以研究名为“Babel 库”(https://libraryofbabel.info/) 网站中的文本的程序来训练我的一些编程知识。

我正在使用 BeautifulSoup 从 HTML 代码中获取实际文本,然后我使用正则表达式来搜索我要查找的内容,在这种情况下,我只使用字母“a”对其进行测试. 但是由于某种原因,代码给出了一个错误,并说我正在搜索“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"})的结果永远不会为空吗?

标签: regex python-3.x beautifulsoup python-requests


【解决方案1】:

你的 if 在循环之外,soup.findAll("div",{"class":"bookrealign"}) 什么也没找到,所以 rdata 永远不会被定义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多