У меня есть проект, где мне нужно соскрести все рейтинги 50 актеров/актрис, а это значит, что я должен получить доступ и очистить около 3500 веб-страниц. Это занимает больше времени, чем я ожидал, и я ищу способ ускорить работу. Я знаю, что есть такие рамки, как scrapy, но я бы хотел работать без каких-либо других модулей. Есть ли быстрый и простой способ переписать мой код, или это займет слишком много времени? Мой код выглядит следующим образом:Ускорение веб-соскабливания
def getMovieRatingDf(movie_links):
counter = -1
movie_name = []
movie_rating = []
movie_year = []
for movie in movie_links.tolist()[0]:
counter += 1
request = requests.get('http://www.imdb.com/' + movie_links.tolist()[0][counter])
film_soup = BeautifulSoup(request.text, 'html.parser')
if (film_soup.find('div', {'class': 'title_wrapper'}).find('a').text).isdigit():
movie_year.append(int(film_soup.find('div', {'class': 'title_wrapper'}).find('a').text))
# scrap the name and year of the current film
movie_name.append(list(film_soup.find('h1'))[0])
try:
movie_rating.append(float(film_soup.find('span', {'itemprop': 'ratingValue'}).text))
except AttributeError:
movie_rating.append(-1)
else:
continue
rating_df = pd.DataFrame(data={"movie name": movie_name, "movie rating": movie_rating, "movie year": movie_year})
rating_df = rating_df.sort_values(['movie rating'], ascending=False)
return rating_df
Вы, кажется, имеет неустойчивые отступы, и Python , из всех языков программирования, не любит неустойчивый отступ. Работает ли то, что вы вставляете? «Возврат» не относится к показанной «def». Строки 'else: continue' и следующие строки также не имеют отступов. –