Как получить значение результата страницы сокращения URL? - PullRequest
2 голосов
/ 21 января 2020

Я пытаюсь автоматически получить результат сокращения URL. Это страница, которую я использую: Сайт сокращения URL

Это код, который я сделал (список URL содержит ссылки):

driver.get("http://paylinx.pw/linx/")


for i in URLS:
    driver.find_element_by_xpath('//*[@id="url"]').click()
    time.sleep(2)
    driver.find_element_by_xpath('//*[@id="url"]').send_keys(i)
    time.sleep(2)
    driver.find_element_by_xpath('//*[@id="invisibleCaptchaShort"]').click()
    time.sleep(2)

После этого я получаю shortened url. Мне понадобится небольшая помощь, чтобы как-то это получить.

Ответы [ 3 ]

0 голосов
/ 21 января 2020

Вам нужно использовать page.source, потому что он переводит вашу страницу по необходимому коду, для chromedriver, что-то вроде lifehuck)) или вы можете использовать get_attribute ('inner HTML') - вы можете получить доступ ко всему со страницы.

Python WebDriver, как напечатать весь источник страницы (html)

0 голосов
/ 21 января 2020

Для автоматического извлечения результирующего значения укорачивателя URL вам нужно вызвать WebDriverWait для visibility_of_element_located(), и вы можете использовать следующие Стратегии локатора :

  • Кодовый блок:

    from selenium import webdriver
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
    options = webdriver.ChromeOptions() 
    options.add_argument("start-maximized")
    options.add_experimental_option("excludeSwitches", ["enable-automation"])
    options.add_experimental_option('useAutomationExtension', False)
    URLS = ['https://selenium.dev/downloads/','https://selenium.dev/documentation/en/']
    for i in URLS:
        driver = webdriver.Chrome(options=options, executable_path=r'C:\WebDrivers\chromedriver.exe')
        driver.get("http://paylinx.pw/linx/")
        element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#url")))
        element.clear()
        element.send_keys(i)
        driver.find_element_by_css_selector("button.btn-captcha#invisibleCaptchaShort").click()
        print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.input-group>input.form-control.input-lg"))).get_attribute("value"))
        driver.quit()
    
  • Консольный вывод:

    http://paylinx.pw/linx/Uksheqw8
    http://paylinx.pw/linx/s0DA44C
    
0 голосов
/ 21 января 2020

Используйте WebDriverWait, чтобы дождаться короткого результата URL и получить значение.

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10)

with driver:
    driver.get("http://paylinx.pw/linx/")
    for url in URLS:
        driver.find_element_by_id("url").send_keys(url, Keys.ENTER)

        short_url = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, ".add-link-result .input-lg"))).get_attribute("value")
        print(short_url, url)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...