Как я могу очистить несколько страниц и добавить данные вместе в Python? - PullRequest
0 голосов
/ 31 октября 2019

Я пытаюсь соскрести с гнилых помидоров: Имя критика Рейтинг. Оценка должна быть «гнилой», «свежей» или «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, другое поле, единственное значение, которое оно взяло, это последнее значение второй страницы гнилого помидора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...