【问题标题】:Web Scraping :- "" TypeError: 'NoneType' object is not subscriptable "". How to fix this issue?Web Scraping :- "" TypeError: 'NoneType' object is not subscriptable ""。如何解决这个问题?
【发布时间】:2021-11-17 00:40:52
【问题描述】:

我已尝试修复此错误,但无法解决。

我正在尝试抓取一个网站,它的外观如下:

变量str1以字符串形式包含网站的网址。

my_url = str1
uClient = uReq(my_url)
page_html = uClient.read()
uClient.close()
page_soup = soup(page_html, "html.parser")

data = page_soup.findAll("div", {"class": "_2kHMtA"})

最后我尝试打印这个声明:

y = data[2].div.img['alt']
print(y)

当我打印此语句时,它总是试图显示该错误! 请帮忙。

【问题讨论】:

    标签: python python-3.x web-scraping beautifulsoup typeerror


    【解决方案1】:

    打印您的 data 对象。您没有设法找到您要查找的数据,因此您试图打印第三个条目(因此失败)。

    在不知道您输入的 html 的情况下,我无法说出这是为什么。

    AFAIK 你不能将字典传递给findAll。而是使用关键字参数,如下所示:

    soup.find_all("div", class="_myclass")
    

    请注意,findAllfind_all 的别名。

    还请注意,您只能在 soup 对象上运行 find_all。您不能在先前的find_all 对象的结果上运行它,该对象是ResultsSet 对象(基本上是汤对象的列表)。 (当然,如果需要,您可以遍历这些汤对象。)

    【讨论】:

    • 啊,错误更进一步。
    • 这通常意味着您根本没有在 soup 对象上调用它:stackoverflow.com/questions/59911101/…。尝试从头开始运行您的代码(使用关键字 args 来衡量,并将 findAll 更改为 find_all 以获取样式)
    • 我可以在运行以下命令时分享美化 HTML:- print(soup.prettify(data[1]))
    • 这没有意义:如果你可以print(soup.prettify(data[1])),那么你更可以print(data)。尝试再次从头开始运行您的代码,仅按照此处/上面所写的方式。
    • 如果我使用另一个网址,那么它工作正常
    猜你喜欢
    • 2018-10-15
    • 2018-01-23
    • 1970-01-01
    • 2018-02-05
    • 1970-01-01
    • 2017-10-14
    • 2020-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多