Witam Napisałem funkcję używając selenu do kliknięcia przycisku "doradca", abym mógł zeskrobać ukryty stół. kiedy go uruchamiam, mój sterownik Chrome z powodzeniem otwiera się i odwiedza stronę ... ale przycisk nie jest klikany. Mam nadzieję, że pomożecie mi to rozgryźć? UWAGA: Jestem nowy w technikach skrobania. daj mi również znać, czy można to zrobić za pomocą bs4. Oto kod:

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() 
1
Sabbir Talukdar 31 marzec 2020, 11:21

3 odpowiedzi

Najlepsza odpowiedź
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()

Wynik: wyświetl online

enter image description here

1
αԋɱҽԃ αмєяιcαη 31 marzec 2020, 08:55

Czy to działa? Jestem też nowy w selenie. Jednak tutaj zmieniłem find_element_by_xpath na 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() 

Przetestowałem to i przycisk został kliknięty.

0
Madhur Gupta 31 marzec 2020, 09:21

Używana ścieżka xpath jest nieprawidłowa. Wybierz poniższą ścieżkę xpath, aby kliknąć przycisk:

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

Musisz dodać następujące importy:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
0
Sameer Arora 31 marzec 2020, 08:51