【发布时间】:2021-08-03 18:37:48
【问题描述】:
我正在尝试使用此代码抓取烂番茄网站,但出现错误: “ValueError:值的长度与索引的长度不匹配”。
如果有人可以帮助我纠正索引问题,我将不胜感激。
非常感谢您的帮助。
(原代码来自:How to scrape more than one page of critic reviews from Rotten Tomatoes?)
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
# for explicit wait:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
import pandas as pd
PATH = "C:\Program Files (x86)\chromedriver.exe"
driver = webdriver.Chrome(PATH)
driver.get("https://www.rottentomatoes.com/m/avengers_endgame/reviews")
WebDriverWait(driver, 15).until(EC.element_to_be_clickable((By.CLASS_NAME, 'review_table')))
review_1df = pd.DataFrame(columns=['Date', 'Reviewer', 'Website', 'Review', 'Score'])
dates = []
reviews = []
scores = []
newscores = []
names = []
sites = []
results = driver.find_elements_by_class_name("review_area") # right box
reviewnum = 1
reviewers = driver.find_elements_by_xpath("//div[@class='row review_table_row']")
print(len(reviewers))
for r in results:
dates.append(r.find_element_by_class_name('subtle').text)
reviews.append(r.find_element_by_class_name('the_review').text)
scores.append(r.find_element_by_xpath(".//div[contains(@class,'small subtle review-link')]").text)
for r in reviewers:
names.append(r.find_element_by_xpath("(.//div[contains(@class,'critic_name')]/a)[1]").text)
sites.append(r.find_element_by_xpath("(.//div[contains(@class,'critic_name')]/a)[2]").text)
reviewnum+=1
for score in scores:
if score == ('Full Review'):
newscores.append('no score')
else:
score2 = score[30:]
newscores.append(score2)
driver.quit()
review_1df['Date'] = dates
review_1df['Review'] = reviews
review_1df['Score'] = newscores
review_1df['Reviewer'] = names
review_1df['Website'] = sites
【问题讨论】:
标签: python pandas selenium selenium-webdriver