Я пытаюсь отменить обзоры с сайта verizon, и я нашел xpath отзывов, сделав inspect
на веб-странице. Я выполняю код ниже, но этот review.text
не работает отлично все время. Я получаю правильный текст иногда, а иногда он просто печатает Error in
сообщения -Selenium web scraping in python can not read .text of elements
Не уверен, что я делаю неправильно ..
from selenium import webdriver
url = 'https://www.verizonwireless.com/smartphones/samsung-galaxy-s7/'
browser = webdriver.Chrome(executable_path='/Users/userName/PycharmProjects/Verizon/chromedriver')
browser.get(url)
reviews = []
xp = '//*[@id="BVRRContainer"]/div/div/div/div/div[3]/div/ul/li[2]/a/span[2]'
# read first ten pages of reviews ==>
for j in range(10):
reviews.extend(browser.find_elements_by_xpath('//*[@id="BVRRContainer"]/div/div/div/div/ol/li[*]/div/div[1]'
'/div/div[2]/div/div/div[1]/p'))
try:
next = browser.find_element_by_xpath(xp)
next.click()
except:
print(j,"error clicking")
# Print reviews ===>
for i, review in enumerate(reviews):
try:
print(review.text)
except:
print("Error in :" review)
Спасибо так много! Я попытался использовать 'WebDriverWait (браузер, timeout = 10) .until (EC.presence_of_element_located ((By.XPATH, '// * [@ id =" BVRRContainer "]')))' , но я думаю, что мой размещение этой логики было неправильным вообще. – Pushkr
Обычно использование 'ExplicitWait' - хорошая идея. Вы можете попытаться реализовать его, чтобы заменить эти 'time.sleep()' и сэкономить некоторое время – Andersson
Конечно, я очень новичок в селене. Я обязательно посмотрю на ExplicitWait. – Pushkr