Хорошо.Теперь я действительно в тупике.Я очищаю данные красивым супом, и страницы имеют структурированный формат, такой как ссылка https://www.brightscope.com/ratings/a
рейтинги проходят через other
.Каждая буква, такая как a, b, c, ..., после оценок имеет несколько страниц для них.Я пытаюсь создать цикл while для перехода на каждую страницу, и пока существует определенное условие, очистите все ссылки (которые я до сих пор не получил в этом коде).Однако, когда я запускаю код, цикл while продолжает работать без остановки.Как я могу исправить это, чтобы перейти на каждую страницу и найти условие для выполнения, а затем, если оно не найдено, перейти к следующей букве?Прежде чем кто-либо спросит, я искал код и не вижу тегов li
, пока он продолжает работать.
Например: https://www.brightscope.com/ratings/A/18
- это максимальное значение, которое он получит за А, но продолжает работать.
import requests
from bs4 import BeautifulSoup
url = "https://www.brightscope.com/ratings/"
page = requests.get(url)
soup = BeautifulSoup(page.text, 'html.parser')
hrefs = []
ratings = []
ks = []
pages_scrape = []
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:]
count = 1
# So it runs each letter a, b, c, ...
for each_rating in ratings:
#Pulls the page
page = requests.get(each_rating)
#Does its soup thing
soup = BeautifulSoup(page.text, 'html.parser')
#Supposed to stay in A, B, C,... until it can't find the 'li' tag
while soup.find('li'):
page = requests.get(each_rating+str(count))
print(page.url)
count = count+1
#Keeps running this and never breaks
else:
count = 1
break