Невозможно очистить следующую страницу (нумерацию страниц) с помощью Python Selen - PullRequest
0 голосов
/ 07 марта 2019

Я пытался очистить данные с konga.com. Но я смог очистить первую страницу, но на 2-й странице возникли проблемы. Я также скопировал URL страницы 2 сайта, но он работает. код здесь ниже:

from selenium import webdriver
import time

browser = webdriver.Chrome(executable_path='C:\Python27\Scripts\chromedriver.exe')

for i in range(1,50):
   y= '%0d'%i
   url="https://www.konga.com/category/electronics-5261?"+ "page="+'%0d'%i
   print url
   browser.get("url")


p=browser.find_elements_by_xpath ("//div[@class='af885_1iPzH']/h3")

for a in p:
        print '.........page'+ str(i)+ '..........' 
        print a.text

1 Ответ

1 голос
/ 07 марта 2019

Вы были близки. Проблема в том, что вы пытались найти имя класса до того, как оно действительно было загружено на страницу. То же самое с нумерацией ссылок. Похоже, что эти элементы загружаются не полностью в течение нескольких секунд, пока страница не будет загружена. Вам нужно подождать несколько секунд, пока веб-драйвер увидит этот элемент, используя метод WebDriverWait :

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
import time

chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--hide-scrollbars')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument("--log-level=3")  # fatal


page = 0

browser = webdriver.Chrome(executable_path=r'C:\Users\edekio\Downloads\chromedriver.exe', chrome_options=chrome_options)

url = "https://www.konga.com/category/electronics-5261"
browser.get(url)

while page < 51:

    page = page + 1


    next_page = WebDriverWait(browser, 15).until(EC.presence_of_element_located((By.LINK_TEXT, str(page))))
    next_page.click()


    print("page " + str(page))

    element = WebDriverWait(browser, 15).until(
        EC.presence_of_element_located((By.CLASS_NAME, "af885_1iPzH")))
    print(element.text)

Вывод на первые 3 страницы:

page 1
Q18 Smartwatch - Silver
page 2
Zealot S12 Bluetooth Wireless Speaker...
page 3
I8 Tws Wireless Earbuds - White

Это было написано на python 3.6. Похоже, вы используете Python 2.x, но вы можете использовать онлайн-конвертер, если он не работает для вашей версии. Я бы порекомендовал перейти на Python 3.6 для Selenium, поскольку я не знаю, работают ли все их функции на Python 2.x

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