Selenium не получает всю информацию с веб-страницы - PullRequest
1 голос
/ 18 апреля 2019

Я пытаюсь получить все ссылки href от https://search.yhd.com/c0-0-1003817/ (те, которые ведут к конкретным продуктам), но, хотя мой код работает, он получает только 30 ссылок. Я не знаю, почему это происходит. Не могли бы вы помочь мне, пожалуйста?

Я работал с селеном (python 3.7), но ранее я также пытался получить коды с красивым супом. Это тоже не сработало.

from selenium import webdriver 
import time
import requests
import pandas as pd

def getListingLinks(link):
    # Open the driver
    driver = webdriver.Chrome()
    driver.get(link)
    time.sleep(3)

    # Save the links
    listing_links = []
    links = driver.find_elements_by_xpath('//a[@class="img"]')
    for link in links:
        listing_links.append(str(link.get_attribute('href')))
    driver.close()
    return listing_links

imported = getListingLinks("https://search.yhd.com/c0-0-1003817/")

Я должен получить 60 ссылок, но мне удается получить только 30 с моим кодом.

1 Ответ

2 голосов
/ 18 апреля 2019

при начальной загрузке, страница содержит только 30 изображений / ссылок.только при прокрутке вниз загружаются все 60 предметов.вам нужно сделать следующее:

def getListingLinks(link):
    # Open the driver
    driver = webdriver.Chrome()
    driver.maximize_window()
    driver.get(link)
    time.sleep(3)
    # scroll down: repeated to ensure it reaches the bottom and all items are loaded
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(3)
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(3)

    # Save the links
    listing_links = []
    links = driver.find_elements_by_xpath('//a[@class="img"]')
    for link in links:
        listing_links.append(str(link.get_attribute('href')))
    driver.close()
    return listing_links

imported = getListingLinks("https://search.yhd.com/c0-0-1003817/")

print(len(imported))  ## Output:  60
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...