Итак, я пытаюсь очистить некоторые сайты MOOC для моего проекта и начал с Coursera.Итак, первое, что я сделал, это почистил первую страницу «coursera.org/courses».Это сработало.Но когда я попытался выполнить итерацию с первой по десятую страницы, много раз вместо того, чтобы очищать соответствующую страницу, она очищала бы первую.
Позже я пытался очистить любую из страниц, кроме первой, примерночетыре раза.Чаще всего, по крайней мере, в одном из четырех запусков страница будет на самом деле первой, а не той, которую я хотел.
Какие-либо решения?
Вот фрагмент кода:
from urllib.request import urlopen
from urllib.error import HTTPError
from bs4 import BeautifulSoup
from selenium import webdriver
def get_site_file(url):
try:
driver = webdriver.Safari()
driver.implicitly_wait(80)
driver.get(url)
bs=BeautifulSoup(driver.page_source,'html.parser')
driver.close()
return bs;
except HTTPError as e:
print("Site not found"+e)
def scrape_site(url):
try:
pgcn=get_site_file(url)
except:
print("Could not parse")
try:
discovered_courses=pgcn.find("ul",{'class':'ais-InfiniteHits-list'})
except:
print("Did not find something specific to the tag")
if(pgcn==None):
print("Page not found")
else:
courses=pgcn.find("ul",{'class':'ais-InfiniteHits-list'})
for course in courses:
try:
course_title = course.h2.get_text()
course_rating = course.find('span',{'class': 'ratings-text'}).\
get_text()
print(f"Course Title: \t {course_title}")
print(f"Course Rating: \t {course_rating}")
print('\n'+('|')+('<'*3)+('-'*7)+' New Course ' +('-'*7)+('>'*3)+('|')+'\n')
except:
print("Something went wronf when printing the courses")
for i in range(4):
scrape_site("https://www.coursera.org/courses?query=&indices%5Bprod_all_products_term_optimization_test%5D%5Bpage%5D="+str(i+1)+"&indices%5Bprod_all_products_term_optimization_test%5D%5Bconfigure%5D%5BclickAnalytics%5D=true&indices%5Bprod_all_products_term_optimization_test%5D%5Bconfigure%5D%5BhitsPerPage%5D=10&configure%5BclickAnalytics%5D=true")
print("\n\n")