2017-09-28 2 views
0

Je suis en train d'essayer un site Web de rebut, "www.jabong.com" ici pour chaque ligne de produits lorsque nous atteignons le bas de la page, il charge plus de produits. Je veux supprimer tous les liens. Le code que j'essaye est comme montré ci-dessous:python sélénium charger automatiquement plus de pages

from time import sleep 
from selenium import webdriver 
from selenium.webdriver.chrome.options import Options 


def fetch_links(url, product_line_name): 

    chrome_options = Options() 
    chrome_options.add_argument("--disable-notifications") 
    chrome_path = r"D:\chromedriver.exe" 
    driver = webdriver.Chrome(chrome_path, chrome_options=chrome_options) 
    driver.get(url) 
    button="load-more-products" 
    while True: 
     element=driver.find_element_by_class_name(button).click() 
     driver.execute_script("arguments[0].scrollIntoView();", element) 



link_list=["https://www.jabong.com/women/clothing/trousers-jeans/trousers/?source=topnav_women"] 
product_line=["trousers"] 

fetch_links(link_list[0],product_line[0]) 

Le problème ici est incapable de localiser l'élément. J'ai aussi essayé avec class_name, css_selector mais aucun d'eux ne semble fonctionner. Je veux charger le produit en continu sur le navigateur automatiquement.

+0

Ce n'est pas la bonne approche pour ce faire. Parce que lorsque vous faites défiler, il affichera de nouveaux produits et vous pourrez continuer ainsi, cela augmentera tellement les données sur la page que votre chrome et votre sélénium deviendront trop lents pour que vous soyez manipulés. Donc, trouver une façon de travailler avec Scrapy sur ce point et ne pas utiliser de sélénium –

+0

Est-ce que l'élément est dans un cadre? Postez le code HTML. – IamBatman

Répondre

0

Essayez ceci. Il va vous chercher les données requises.

import time 
from selenium import webdriver 
from selenium.webdriver.chrome.options import Options 
from selenium.webdriver.common.action_chains import ActionChains 
from selenium.webdriver.common.keys import Keys 

link_list = ["https://www.jabong.com/women/clothing/trousers-jeans/trousers/?source=topnav_women",] 

def fetch_links(link): 
    chrome_options = Options() 
    chrome_options.add_argument("--disable-notifications") 
    driver = webdriver.Chrome(chrome_options=chrome_options) 
    driver.get(link) 
    actions = ActionChains(driver) 
    for _ in range(10): #Adjust this range according to your need, I meant how far you wanna go down. 
     actions.send_keys(Keys.SPACE).perform() 
     time.sleep(1) 

    for item in driver.find_elements_by_css_selector(".h4"): 
     print(item.text) 

fetch_links(link_list[0]) 

Résultats partiels:

W Orange Printed Palazzo 
DOROTHY PERKINS Olive Solid Mid Rise Skinny Fit Coloured Pant 
VARANGA White Solid Palazzo 
VARANGA Blue Printed Palazzo