Вы пытаетесь получить href преждевременно. Вы пытаетесь извлечь атрибут непосредственно из тега span
, который имеет вложенные теги a
, а не из списка тегов a
.
for each_rating in ratings:
page = requests.get(each_rating)
soup = BeautifulSoup(page.text, 'html.parser')
span = soup.find('span', class_='letter-pages')
for a in span.find_all('a'):
href = a.get('href')
pages_scrape.append(href)
Я не проверял это на всех страницах, но он работал для первой. Вы указали, что на некоторых страницах содержание не очищалось, что связано с поиском span
, возвращающим None
. Чтобы обойти это, вы можете сделать что-то вроде:
for each_rating in ratings:
page = requests.get(each_rating)
soup = BeautifulSoup(page.text, 'html.parser')
span = soup.find('span', class_='letter-pages')
if span:
for a in span.find_all('a'):
href = a.get('href')
pages_scrape.append(href)
print(href)
else:
print('span.letter-pages not found on ' + page)
В зависимости от вашего варианта использования вы можете захотеть сделать что-то другое, но это укажет вам, какие страницы не соответствуют вашей модели соскоба и должны быть исследованы вручную.