Используя python, как мне нажать кнопку, чтобы удалить скрытый контент - PullRequest
1 голос
/ 31 марта 2020

Здравствуйте. Я написал функцию, используя селен, чтобы нажать кнопку «Советник», чтобы я мог удалить скрытую таблицу. когда я запускаю его, мой chrome драйвер успешно открывается и посещает страницу ... но кнопка не нажимается. Надеюсь, вы, ребята, поможете мне разобраться? ПРИМЕЧАНИЕ: я новичок в методах выскабливания. Также, пожалуйста, дайте мне знать, если это можно сделать с помощью bs4. Вот код:

def scrapper():
    u = "https://teqatlas.com/products-and-services/0chain"
    browser = webdriver.Chrome(executable_path=binary_path)
    wait = WebDriverWait(browser, 10)
    browser.set_page_load_timeout(10)
    # stop load after a timeout
    try:
        browser.get(u)
    except TimeoutException:
        browser.execute_script("window.stop();")

    button = browser.find_element_by_xpath('//button[@class="o5ph61-3 eBqrHG"]')
    if button:
        button.click()

scrapper() 

Ответы [ 3 ]

1 голос
/ 31 марта 2020
from selenium import webdriver
import pandas as pd
from selenium.webdriver.firefox.options import Options

options = Options()
options.add_argument('--headless')
driver = webdriver.Firefox(options=options)

driver.get("https://teqatlas.com/products-and-services/0chain")

btn = driver.find_element_by_css_selector("button.o5ph61-3.faMQuX").click()
df = pd.read_html(driver.page_source)[0]

df.to_csv("data.csv", index=False)

driver.quit()

Вывод: просмотр в режиме онлайн

enter image description here

0 голосов
/ 31 марта 2020

Используемый вами xpath неверен. Пожалуйста, выберите ниже xpath, чтобы нажать на кнопку:

WebDriverWait(browser, 20).until(EC.presence_of_element_located((By.XPATH, "//button[text()='Advisories']"))).click()

Вам необходимо добавить следующий импорт:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
0 голосов
/ 31 марта 2020

Это работает? Я также новичок в селене. Я изменил find_element_by_xpath на find_element_by_class_name, хотя здесь.

from selenium.webdriver.common.action_chains import ActionChains
def business_description_scrapper():
    u = "https://teqatlas.com/products-and-services/0chain"
    browser = webdriver.Chrome(executable_path=binary_path)
    wait = WebDriverWait(browser, 10)
    browser.set_page_load_timeout(10)
    # stop load after a timeout
    try:
        browser.get(u)
    except TimeoutException:
        browser.execute_script("window.stop();")

    button = browser.find_element_by_class_name("o5ph61-3.eBqrHG")
    if button:
        actions = ActionChains(browser)
        actions.click(button).perform()

business_description_scrapper() 

Я проверил его, и кнопка была нажата.

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