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.
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 .
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()
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.
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.
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()
Penantian tersirat ialah menetapkan masa menunggu global Jika elemen tidak muncul dalam masa ini, pengecualian akan dilemparkan.
rreeeeAtas 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!