002_selenium

发布时间 2023-05-29 05:32:42作者: 火焰马

 

 

/*
目录: 
    一 下载
    二 插件:ChroPath
    三 定位变更
    四 基础用法
    五 搜索关键字,爬取内容
*/

 

一 下载

/*
下载WebDriver: 
    1 url: https://sites.google.com/chromium.org/driver/downloads
    2 查看电脑chrome版本,下载对应WebDriver
*/

 

 

二 插件:ChroPath

/*
插件: ChroPath
    1 生成: 定位
    2 生成: 正则表达式
    3 录制: 自动录制; 手动调整。
*/

 

 


三 定位变更

 

 

/*
Old API    New API
find_element_by_id(‘id’)                      find_element(By.ID, ‘id’)
find_element_by_name(‘name’)                    find_element(By.NAME, ‘name’)
find_element_by_xpath(‘xpath’)                   find_element(By.XPATH, ‘xpath’)
find_element_by_link_text(‘link_text’)              find_element(By.LINK_TEXT, ‘link_text’)
find_element_by_partial_link_text(‘partial_link_text’)     find_element(By.PARTIAL_LINK_TEXT, ‘partial_link_text’)
find_element_by_tag_name(‘tag_name’)                find_element(By.TAG_NAME, ‘tag_name’)
find_element_by_class_name(‘class_name’)             find_element(By.CLASS_NAME, ‘class_name’)
find_element_by_css_selector(‘css_selector’)           find_element(By.CSS_SELECTOR, ‘css_selector’)

*/

 

四 基础用法

from selenium import webdriver  # 导入selenium库中的webdriver模块
import time  # 导入time模块

from selenium.webdriver.common.by import By  # 导入selenium库中的By模块
from selenium.webdriver.common.keys import Keys  # 导入selenium库中的Keys模块

if __name__ == '__main__':
    PATH = "C:/Users/123/Desktop/chromedriver_win32/chromedriver.exe"  # 设置chromedriver的路径

    driver = webdriver.Chrome(PATH)  # 创建Chrome浏览器驱动对象
    driver.get("https://www.baidu.com")  # 访问URL - 百度
    time.sleep(5)  # 等待5秒钟,使页面加载完成

    # 方法一:使用ID定位元素
    driver.find_element(By.ID, "kw").send_keys("汁虫 博客园")  # 定位搜索框元素,输入关键字"汁虫 博客园"
    time.sleep(3)  # 等待3秒钟,使搜索结果加载完成
    driver.find_element(By.ID, "su").click()  # 定位搜索按钮元素,点击搜索按钮

    # 方法二:使用变量定位元素
    e = driver.find_element(By.ID, "kw")  # 定位搜索框元素
    e.send_keys("python" + Keys.RETURN)  # 输入关键字"python",并按下回车键进行搜索

    time.sleep(2)  # 等待2秒钟
    driver.quit()  # 退出浏览器驱动

 

 

五 搜索关键字,爬取内容

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC


if __name__ == '__main__':
    PATH = "C:/Users/123/Desktop/chromedriver_win32/chromedriver.exe"
    driver = webdriver.Chrome(PATH)
    driver.get("https://hahow.in/")  # 访问url

    # 等待搜索框元素加载完成
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.XPATH, "//header/div[@id='header']/nav[1]/div[1]/div[2]/div[1]/ul[1]/li[5]/div[1]/div[1]/input[1]"))
    )
    e = driver.find_element(By.XPATH, "//header/div[@id='header']/nav[1]/div[1]/div[2]/div[1]/ul[1]/li[5]/div[1]/div[1]/input[1]")
    e.clear()
    e.send_keys("python" + Keys.RETURN)

    # 等待“影音課程”链接加载完成
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.PARTIAL_LINK_TEXT, "影音課程"))
    )
    e = driver.find_element(By.PARTIAL_LINK_TEXT, "影音課程")
    e.send_keys(Keys.RETURN)

    time.sleep(3)   # 无法解决: 显式等待 + 隐式等待
    r = driver.find_elements(By.CLASS_NAME, "marg-b-10")
    for t in r:
        print(type(t), t.text)   # 获取文本内容

    e = driver.find_element(By.XPATH, "//header/div[@id='header']/nav[1]/div[1]/div[2]/div[1]/ul[1]/li[5]/div[1]/div[1]/input[1]")
    time.sleep(15)

    driver.quit()   # 退出