Ошибка `NoneType` при использовании BeautifulSoup - PullRequest
0 голосов
/ 06 декабря 2018

Ниже мой код ...

from bs4 import BeautifulSoup

import requests


for count in range(1,2):


    r = requests.get('http://manufacturer.indiatradepage.com/all/a_a_enterprises/' + str(count) + '/',headers={'User-Agent': 'Googlebot'})

    soup = BeautifulSoup(r.text,'lxml')

    data = soup.find('div',class_='container_main')

    for links in data.find_all('div',class_='com_countainer'):
        for link in links.find_all('a')[0:1]:
            l = link['href']
            r = requests.get(l)
            soup = BeautifulSoup(r.text,'lxml')

            data = soup.find('td',{"id":"intro_txt"})
            table1 = data.find('table',{"style":"max-height: 400px !important"})

            body1 = table1.find('div',class_='f_body')


            table2 = data.find('div',{"id":"f3_1"})

            div = table2.find('div',class_='f_body')


            body2 = div.find('div',{"style":"text-transform:capitalize; "})

            print body2.text + body1.text

я получаю это сообщение об ошибке ниже.

Трассировка (последний вызов был последним): Файл "C: / Python27 / indiatradepage_try.py ", строка 19, в body1 = table1.find ('div', class _ = 'f_body') AttributeError: У объекта 'NoneType' нет атрибута 'find'

из-за ошибки ниже,мой код ломается каждый раз.

1 Ответ

0 голосов
/ 07 декабря 2018

Вы можете справиться с этим, не пытаясь использовать атрибут .find для объекта NoneType, что вы пытаетесь сделать на body1 = table1.find('div',class_='f_body'), а также, вероятно, на table2 = data.find('div',{"id":"f3_1"})

. Вы можете сделатьчто-то вроде этого, который проверит, является ли таблица None, и, если она есть, вместо .find, распечатайте, что ее нет, и затем продолжите цикл.

from bs4 import BeautifulSoup

import requests


for count in range(1,2):

    r = requests.get('http://manufacturer.indiatradepage.com/all/a_a_enterprises/' + str(count) + '/',headers={'User-Agent': 'Googlebot'})

    soup = BeautifulSoup(r.text,'lxml')

    data = soup.find('div',class_='container_main')

    for links in data.find_all('div',class_='com_countainer'):
        for link in links.find_all('a')[0:1]:
            l = link['href']
            r = requests.get(l)
            soup = BeautifulSoup(r.text,'lxml')

            data = soup.find('td',{"id":"intro_txt"})
            table1 = data.find('table',{"style":"max-height: 400px !important"})

            if table1 != None:
                body1 = table1.find('div',class_='f_body').text
            else:
                body1 = ' table1 no present '


            table2 = data.find('div',{"id":"f3_1"})
            if table2 != None:
                div = table2.find('div',class_='f_body')
                body2 = div.find('div',{"style":"text-transform:capitalize; "}).text
            else:
                body2 = ' table2 not present '

            print (body2 + body1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...