getText方法中的AttributeError

时间:2018-09-25 10:25:10

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

当我抓取时,一切都会顺利进行,但是有时我会抓取很多信息 我明白了

AttributeError:“ NoneType”对象没有属性“ h1” 。 下面是我的代码:

    for index, link in enumerate(all_links):
        self.driver.execute_script("window.open('" + link + "');")
        print(link)
        sleep(9)
        self.driver.switch_to.window(self.driver.window_handles[1])
        final_soup = BeautifulSoup(self.driver.page_source, 'lxml')
        image = final_soup.find('div', attrs={'class': 'someClass_1'})
        filename = 'image_' + str(index) + '.png'
        title = final_soup.find('div', attrs={'class': 'someClass_2'})
        sleep(1)
        origin_title = title.h1.getText()   # here is the problem
        print(origin_title)

有时会出现此错误,很奇怪的是,我检查了html中的特定链接,并且所有外观看上去都与其他链接相同,我不知道为什么会收到错误。h1标签中的文本在那里。

我试图增加睡眠,但没有任何改变。另一件事,我可以做的就是增加尝试-抓住:

 try:
    origin_title = title.h1.getText()   # here is the problem
    print(origin_title)
 except AttributeError:
    pass

但是我的问题是,如果在h1标签中找不到文本,我不想通过,文本在那里,我应该以某种方式得到它

2 个答案:

答案 0 :(得分:0)

请用此行更正您的代码行

final_soup.find('div', attrs={'class': 'someClass_2)

与此行

final_soup.find('div', {'class': 'someClass_2'})

您错过了“'}”

答案 1 :(得分:0)

此代码完成了我需要的工作。看来该错误可能是由于Internet意外断开连接或服务器未响应。

 while True:
            try:
                title = final_soup.find('div', attrs={'class': 'someclass'})
                sleep(1)
                origin_title = title.h1.getText()
                print(origin_title)
            except Exception as ex:
                print('number of try', i)
                sleep(1)
                i += 1
                continue
            break