Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan Selenium untuk merangkak data halaman web dalam Python

Cara menggunakan Selenium untuk merangkak data halaman web dalam Python

WBOY
WBOYke hadapan
2023-05-09 11:05:362310semak imbas

    1. Apakah itu Selenium

    Perangkak web ialah teknik yang sangat berguna dalam pengaturcaraan Python, yang membolehkan anda mendapatkan data secara automatik pada halaman web.

    Selenium ialah alat ujian automatik yang boleh mensimulasikan operasi pengguna dalam penyemak imbas, seperti mengklik butang, mengisi borang, dsb. Tidak seperti perpustakaan perangkak yang biasa digunakan seperti BeautifulSoup dan permintaan, Selenium boleh mengendalikan kandungan yang dimuatkan secara dinamik oleh JavaScript Oleh itu, Selenium ialah pilihan yang sangat sesuai untuk data yang perlu disimulasikan untuk mendapatkan interaksi pengguna.

    2. Pasang Selenium

    Untuk menggunakan Selenium, anda perlu memasangnya terlebih dahulu. Anda boleh menggunakan arahan pip untuk memasang perpustakaan Selenium:

    pip install selenium

    Selepas pemasangan selesai, anda juga perlu memuat turun pemacu penyemak imbas yang berfungsi dengan Selenium. Artikel ini menggunakan penyemak imbas Chrome sebagai contoh Anda perlu memuat turun ChromeDriver yang sepadan dengan versi penyemak imbas Chrome anda. Alamat muat turun: sites.google.com/a/chromium.…

    Selepas memuat turun dan nyahzip, letakkan fail chromedriver.exe ke lokasi yang sesuai dan ingat lokasi, kami akan memerlukannya kemudian digunakan dalam kod .

    3. Merangkak data halaman web

    Berikut ialah contoh mudah untuk merangkak halaman web dan mengeluarkan tajuk halaman.

    from selenium import webdriver
    # 指定chromedriver.exe的路径
    driver_path = r"C:\path\to\chromedriver.exe"
    # 创建一个WebDriver实例,指定使用Chrome浏览器
    driver = webdriver.Chrome(driver_path)
    # 访问目标网站
    driver.get("https://www.example.com")
    # 获取网页标题
    page_title = driver.title
    print("Page Title:", page_title)
    # 关闭浏览器
    driver.quit()

    4. Simulasikan interaksi pengguna

    Selenium boleh mensimulasikan pelbagai operasi pengguna dalam penyemak imbas, seperti mengklik butang, mengisi borang, dsb. Berikut ialah contoh di mana kami akan menggunakan Selenium untuk operasi log masuk di tapak web:

    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    
    driver_path = r"C:\path\to\chromedriver.exe"
    driver = webdriver.Chrome(driver_path)
    
    driver.get("https://www.example.com/login")
    
    # 定位用户名和密码输入框
    username_input = driver.find_element_by_name("username")
    password_input = driver.find_element_by_name("password")
    
    # 输入用户名和密码
    username_input.send_keys("your_username")
    password_input.send_keys("your_password")
    
    # 模拟点击登录按钮
    login_button = driver.find_element_by_xpath("//button[@type='submit']")
    login_button.click()
    
    # 其他操作...
    
    # 关闭浏览器
    driver.quit()

    Dengan menggabungkan pelbagai ciri Selenium, anda boleh menulis perangkak web yang berkuasa untuk merangkak data pada pelbagai tapak web. Walau bagaimanapun, sila ambil perhatian bahawa semasa merangkak, anda mesti mematuhi peraturan robots.txt tapak web sasaran dan menghormati dasar mengikis data tapak web. Di samping itu, merangkak terlalu kerap boleh membebankan tapak web malah mencetuskan mekanisme anti-merangkak, jadi adalah disyorkan untuk mengawal kelajuan merangkak secara munasabah.

    5. Mengendalikan kandungan yang dimuatkan secara dinamik

    Untuk sesetengah tapak web dengan kandungan yang dimuatkan secara dinamik, kami boleh menggunakan mekanisme menunggu tersurat dan menunggu tersirat yang disediakan oleh Selenium untuk memastikan unsur-unsur pada halaman web telah dimuatkan.

    1. Penantian eksplisit

    Penantian eksplisit merujuk kepada menetapkan keadaan menunggu tertentu dan menunggu elemen memenuhi syarat dalam masa yang ditetapkan.

    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_path = r"C:\path\to\chromedriver.exe"
    driver = webdriver.Chrome(driver_path)
    
    driver.get("https://www.example.com/dynamic-content")
    
    # 等待指定元素出现,最多等待10秒
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "dynamic-element-id"))
    )
    
    # 操作该元素...
    
    driver.quit()

    2. Penantian tersirat

    Penantian tersirat ialah menetapkan masa menunggu global Jika elemen tidak muncul dalam masa ini, pengecualian akan dilemparkan.

    rreeee

    Atas ialah kandungan terperinci Cara menggunakan Selenium untuk merangkak data halaman web dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam