Селен, как прокрутить вниз, чтобы получить все ссылки - PullRequest
0 голосов
/ 23 сентября 2019

Я хочу экспортировать все документы, поэтому мне нужны все ссылки.

, если мышь не прокручивается вниз, все ссылки не будут загружены.

quip

Нужно немного опуститься, чтобы постепенно загрузить

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

# Configuration information
email = "187069474@qq.com"
password = "Huangbo1019@"

driver = webdriver.Chrome()
index_url = "https://testselenium.quip.com/BCWAOAUkg1v"
driver.get(url=index_url)
driver.find_element_by_xpath('//*[@id="header-nav-collapse"]/ul/li[9]/a').click()  # click login
time.sleep(1)
driver.find_element_by_xpath('/html/body/div[2]/div[1]/div[1]/form/div/input').send_keys(email)  # input email
driver.find_element_by_xpath('//*[@id="email-submit"]').click()
time.sleep(1)
driver.find_element_by_xpath('/html/body/div/div/form/div/input[2]').send_keys(password)  # input password
driver.find_element_by_xpath('/html/body/div/div/form/button').click()
time.sleep(2)

Может понадобиться новая стратегия

Ответы [ 2 ]

0 голосов
/ 23 сентября 2019

Вы можете использовать Javascript для прокрутки по координатам.Если вы можете получить высоту вашей страницы в пикселях, вы можете вызвать метод Scroll(int xCoordinate, int yCoordinate) и увеличивать координаты прокрутки с каждой последовательной прокруткой.

Вы хотите начать с прокрутки до начальной координаты x, y на странице.При прокрутке вниз ваша координата y для прокрутки будет меняться.Если вы не увеличиваете координату y при прокрутке вниз, вы будете застревать, прокручивая до одного и того же места снова и снова.Таким образом, вы должны определить переменную increment на основе высоты пикселя страницы, которую вы используете.В зависимости от того, сколько строк вы хотите прокрутить одновременно, ваша переменная increment должна быть примерно равна высоте в пикселях каждой строки, которую вы прокручиваете.

numberOfScrolls должно быть равно числустрок, которые вы хотите прокрутить.

Метод будет выглядеть примерно так:

public void ScrollDown(int startX, int startY, int increment, int numberOfScrolls) 
{
    // cast webdriver to javascript executor
    var executor = ((IJavaScriptExecutor) driver);

    // keep track of current y coordinate
    // since we are scrolling down, y coordinate will change with each scroll
    var currentYCoordinate = startY;

    // scroll down in a loop
    for (int i = 0; i < numberOfScrolls; i++)
    {
        // scroll down
        executor.ExecuteScript("window.scrollTo(startX, currentYCoordinate);");

        // todo: implement any FindElement methods to get the new elements which have been scrolled into view.

        // update y coordinate since we just scrolled down
        currentYCoordinate = currentYCoordinate + increment;

     }
}
0 голосов
/ 23 сентября 2019

вы можете попробовать напрямую с библиотекой запросов

links = browser.find_elements_by_tag_name('a')
for link in links:
    try:
        requests.get(link.get_attribute('href'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...