Я не могу возвращать тексты отзывов, используя selenium или BeautifulSoup или оба вместе для динамического веб-сайта

#python #selenium #selenium-webdriver #beautifulsoup #selenium-chromedriver

#python #selenium #selenium-webdriver #beautifulsoup #selenium-chromedriver

Вопрос:

Я пытаюсь собрать отзывы с динамического веб-сайта (страницы). Я пробовал приведенные ниже коды, но ни один из них не возвращает отзывы.

использование BeautifulSoup:

 my_url = 'same above link'
uClient = uReq(my_url)
page_html = uClient.read()
uClient.close()
page_soup = bs(page_html, "html.parser")
revs = page_soup.findAll("div", {"id":"product-comment-list"})

print(revs)
  

этот код возвращает : []

Использование Selenium:

 chrome_path = r"C:chromedriver.exe"
driver = webdriver.Chrome(chrome_path)
driver.get("same link above")

elm_revs = driver.find_element_by_xpath('//a[@data-tab-name="comments"]')

driver.implicitly_wait(5)

driver.execute_script("arguments[0].click();", elm_revs)


try:
    revs = WebDriverWait(driver, 10).until(
        EC.presence_of_all_elements_located((By.ID, "product-comment-list"))
    )
finally:
    driver.quit()

print(revs.text)

time.sleep(5)

driver.quit()
  

этот код возвращает: urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='127.0.0.1', port=52205): Max retries exceeded with url: /session/63eeb4529f25314429dc7bf2926e010a/element/2ba52c02-56e8-4de8-8432-5e9148c2fcec/text (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x0000018BE37DE370>: Failed to establish a new connection: [WinError 10061] No connection could be made because the target machine actively refused it'))

или если я использую

 try:
    revs = WebDriverWait(driver, 10).until(
        EC.presence_of_all_elements_located((By.ID, "product-comment-list"))
    )
finally:
    print(revs.text)
  

это ничего не возвращает. просто пустой вывод!

Комбинированное использование BeautifulSoup и Selenium:

 chrome_path = r"C:chromedriver.exe"
driver = webdriver.Chrome(chrome_path)
driver.get("same above link")


elm_revs = driver.find_element_by_xpath('//a[@data-tab-name="comments"]')
page = driver.execute_script("arguments[0].click();", elm_revs)


html = driver.page_source
page_soup = bs(html, "html.parser")

for tag in page_soup.findAll('id')
    print(tag.text)
  

и это возвращает: []

Комментарии:

1. в вашем ответе selenium вы не получили доступ к .text . Я также не вижу этого идентификатора.

Ответ №1:

Две проблемы: у вас есть только один комментарий к продукту и печать элемента с помощью .text.

 revs = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "product-comment-list")))

print(revs.text)
  

Комментарии:

1. спасибо, что обратились, но я тоже пробовал это, и это приводит меня к ошибкам, которые я добавлю в Selenium часть кода.