Я пытаюсь соскрести с гнилых помидоров: Имя критика Рейтинг. Оценка должна быть «гнилой», «свежей» или «NA», если у отзыва нет рейтинга. Источник обзора (например, «Нью-Йорк Таймс»). Это должно быть 'NA', если у обзора нет источника. Текст обзора. Это должно быть 'NA', если в обзоре нет текста. Дата обзора. Это должно быть 'NA', если в обзоре нет даты.
Я удалил каждый из элементов по отдельности, и это сработало, но когда я добавляю все в список, оно не работает.
movie="gangs_of_new_york"
pageNum = 2
for k in range(1,pageNum+1):
# Give the url of the page
page = 'https://rottentomatoes.com/m/'+movie+'/reviews?type=&sort=&page='+str(k)+''
# Initialize src to be False
src = False
# Now get the page
# try to scrape 5 times
for i in range(1,6):
try:
# get url content
response = requests.get(page, headers = my_headers)
# get the html content
src = response.content
# if we successuflly got the file, break the loop
break
# if requests.get() threw an exception, i.e., the attempt to get the response failed
except:
print ('failed attempt #',i)
# wait 2 secs before trying again
time.sleep(2)
# if we could not get the page
if not src:
# couldnt get the page, print that we could not and continue to the next attempt
print('Could not get page: ', page)
# move on to the next page
continue
else:
# got the page, let the user know
print('Successfully got page: ', page)
#grabbing critic's Name
only_names = soup.findAll("div", {"class":"critic_name"})
for i in range(0,len(only_names)):
critic_names=only_names[i].find("a").text
print(critic_names)
#grabbing review icon
review_area = soup.findAll("div", {"class":"review_icon"})
for i in range(0,len(review_area)):
review_icon=review_area[i].get('class')[-1]
#grabbing the review source:
review_source = soup.findAll("div",{"class":"col-sm-13 col-xs-24 col-sm-pull-4 critic_name"})
for i in range(0,len(review_source)):
review_sources=review_source[i].find("em").text
#grabbing the text of the review:
review_container = soup.findAll("div",{"class":"the_review"})
for i in range(0,len(review_container)):
review=review_container[i].text
#grabbing review date:
review_date = soup.findAll("div",{"class":"review-date"})
for i in range(0,len(review_date)):
review_dates=review_date[i].text
data.append([critic_names, review_icon,review_sources,review,review_dates])
data[]
должен содержать имя рецензента, значок рецензии, дату рецензии, содержание рецензии и источник рецензии со всех двух страниц гнилого помидора. Но: - это только очистка последней страницы, которая в данном случае является страницей 2. - она только правильно добавила review_date
, другое поле, единственное значение, которое оно взяло, это последнее значение второй страницы гнилого помидора.