Я получаю сообщение об ошибке трассировки, сообщающее AttributeError: 'NoneType' object has no attribute 'startswith'
, когда я заканчиваю свой сценарий. До этого момента я собирал все виды разных страниц, а затем собирал все эти разные страницы в один список, который собирал окончательный URL для каждой бизнес-страницы. Что я сделал, так это перешел на each_page
и удалил все теги 'a'
со страницы, а затем я хочу просмотреть их и оставить только те, которые начинаются с '/401k/'
. Я знаю, что мог бы сделать это, не добавляя его в другой список, потому что чувствую, что у меня их слишком много. Я думал сделать это так:
for a in soup.findAll('a'):
href = a.get('href')
if href.startswith('/401k/'):
final_url.append(href)
#Even when I try this I get an error saying that no attribute
В любом случае, он не получает данные, и я не могу понять, что происходит. Может быть, я слишком много смотрю на экран.
import requests
from bs4 import BeautifulSoup
url = "https://www.brightscope.com/ratings/"
page = requests.get(url)
soup = BeautifulSoup(page.text, 'html.parser')
hrefs = []
ratings = []
pages = []
s_names = []
final_url = []
for href in soup.findAll('a'):
if 'href' in href.attrs:
hrefs.append(href.attrs['href'])
for good_ratings in hrefs:
if good_ratings.startswith('/ratings/'):
ratings.append(url[:-9]+good_ratings)
del ratings[0]
del ratings[27:]
for each_rating in ratings:
page = requests.get(each_rating)
soup = BeautifulSoup(page.text, 'html.parser')
span = soup.find('span', class_='letter-pages')
if soup.find('span', class_='letter-pages'):
for a in span.find_all('a'):
href = a.get('href')
pages.append('https://www.brightscope.com'+href)
else:
pages.append(page.url)
hrefs = []
pages = set(pages)
for each_page in pages:
page = requests.get(each_page)
soup = BeautifulSoup(page.text, 'html.parser')
for a in soup.findAll('a'):
href = a.get('href')
s_names.append(href)
# I am getting a traceback error AttributeError: 'NoneType' object has no attribute 'startswith' starting with the code below.
for each in s_names:
if each.startswith('/401k'):
final_url.append(each)