Веб-страница загружается в селене и доходит до конца, но не содержит все элементы внутри div - PullRequest
0 голосов
/ 15 апреля 2020

Это сайт. https://www.talabat.com/uae/top-selling. Есть несколько 100 продуктов, и только 30 загружается. Я пытался получить все ссылки и страницы, до конца, но отображал только 30 продуктов, а когда щелкнул где-то в веб-драйвере, затем загрузил остальные продукты. Как я могу распечатать ссылки всех продуктов? Заранее спасибо !!

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
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

from bs4 import BeautifulSoup

HOME_PAGE_URL = "https://www.talabat.com/uae/top-selling"
PATIENCE_TIME = 60
LOAD_MORE_XPATH = '//*[@id="comment-ajx"]/div'

driver = webdriver.Chrome(executable_path='C:\\Users\\Mansi Dhingra\\Downloads\\chromedriver.exe')
driver.get(HOME_PAGE_URL)
soup=BeautifulSoup(driver.page_source)

driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
# sleep for 30s
res=[]

results = driver.find_elements_by_xpath("/html/body/div[3]/ui-view/section/div/div[2]/div/div[2]/div/div[2]")

html_code = driver.find_element_by_tag_name("section").text
print(html_code)
for res in results:
    link=res.find_elements_by_tag_name('a')
    for x in link:
        product_link = x.get_attribute("href")

        print(product_link)
print(results)

1 Ответ

0 голосов
/ 15 апреля 2020

Суть в том, что селен читает страницу до того, как страница загрузит все элементы, вам нужно wait.

Просто прочитайте документы: https://selenium-python.readthedocs.io/waits.html

Выберите наилучшее условие для вашего случая и go для него.

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