AttributeError: у объекта 'NoneType' нет атрибута 'text' - кортежи - PullRequest
0 голосов
/ 03 октября 2018

он выдает мне AttributeError, когда я добавляю .text в конец переменных в цикле.Я удаляю их, и он распечатывает все теги вместе с информацией.Я не уверен, почему он продолжает выбрасывать AttributeError.

Любая помощь приветствуется. TT

Я пробовал:

biz_name = result.find('span', attrs={'itemprop':'name'}).text

и

biz_name = result.find('span', attrs={'itemprop':'name'}).text[1:-1]

Вот одна ячейка результатов:

<span itemprop="name">Efrain Jimenez Jr. General Contractor Inc.</span>

и сценарий:

import requests
from bs4 import BeautifulSoup
import pandas as pd
import csv

r = requests.get('https://www.yellowpages.com/search?search_terms=remodeling&geo_location_terms=New+York%2C+NY')

soup = BeautifulSoup(r.text, 'html.parser')

results = soup.find_all('div', attrs={'class':'info'})

records = []

for result in results:
    biz_name = result.find('span', attrs={'itemprop':'name'})
    biz_phone = result.find('div', attrs={'itemprop':'telephone'})
    biz_address = result.find('span', attrs={'itemprop':'streetAddress'})
    biz_city = result.find('span', attrs={'itemprop':'addressLocality'})
    biz_zip = result.find('span', attrs={'itemprop':'postalCode'})
    records.append((biz_name, biz_phone, biz_address, biz_city, biz_zip))

df = pd.DataFrame(records, columns=['biz_name', 'biz_phone', 'biz_address', 'biz_city', 'biz_zip'])

df.to_csv('Yp_Remodel.csv', index=False, encoding='utf-8')

1 Ответ

0 голосов
/ 04 октября 2018

Возможно, это не самый причудливый ответ, но кажется, что в некоторых случаях некоторые значения имеют значение «Нет», поэтому вы получите сообщение об ошибке, если попытаетесь получить доступ к его тексту.Попробуйте это, у меня это сработало.

import requests
from bs4 import BeautifulSoup
import pandas as pd
import csv

r = requests.get('https://www.yellowpages.com/search?search_terms=remodeling&geo_location_terms=New+York%2C+NY')
soup = BeautifulSoup(r.text, 'html.parser')
results = soup.find_all('div', attrs={'class':'info'})

records = []

for result in results:
    biz_name = result.find('span', attrs={'itemprop':'name'}).text if result.find('span', attrs={'itemprop':'name'}) is not None else ''
    biz_phone = result.find('div', attrs={'itemprop':'telephone'}).text if result.find('span', attrs={'itemprop':'telephone'}) is not None else ''
    biz_address = result.find('span', attrs={'itemprop':'streetAddress'}).text if result.find('span', attrs={'itemprop':'streetAddress'}) is not None else ''
    biz_city = result.find('span', attrs={'itemprop':'addressLocality'}).text if result.find('span', attrs={'itemprop':'addressLocality'}) is not None else ''
    biz_zip = result.find('span', attrs={'itemprop':'postalCode'}).text if result.find('span', attrs={'itemprop':'postalCode'}) is not None else ''
    records.append((biz_name, biz_phone, biz_address, biz_city, biz_zip))


df = pd.DataFrame(records, columns=['biz_name', 'biz_phone', 'biz_address', 'biz_city', 'biz_zip'])

df.to_csv('Yp_Remodel.csv', index=False, encoding='utf-8')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...