Advertisement

使用selenium来获取数据集

阅读量:

使用selenium来获取数据集

1、下载最新的chrome浏览器与chromedriver.exe

帮助

帮助

关于Google Chrome

在这里插入图片描述

接着前往获取版本号为134的 chromedriver.exe 文件。
访问地址:https://googlechromelabs.github.io/chrome-for-testing/#stable
单击此处直接访问:访问地址
下载完成后 解压缩 并将文件放置于 D 盘 目录下 记录路径位置 以便后续代码开发时使用。

2、使用示例

复制代码
    # -*- coding: utf-8 -*-
    
    """
    @contact: !微@@信 1257309054
    @file: 爬取心理测试题.py
    @time: 2025/3/22 21:21
    @author: LDC
    """
    
    from selenium import webdriver
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    
    
    def fetch_datas(url):
    driver_path = r'D:\pythonpro\learn_python38\chromedriver-win64\chromedriver.exe'  # 指定 ChromeDriver 的路径
    service = webdriver.ChromeService(executable_path=driver_path)
    # 初始化 WebDriver,使用之前创建 Service 对象
    driver = webdriver.Chrome(service=service)
    
    driver.get(url)  # 打开网址
    wait = WebDriverWait(driver, 10)
    confirm_btn = wait.until(  # 等待可以点击
        EC.element_to_be_clickable(
            (By.NAME, 'test')
        )
    )
    confirm_btn.click()  # 点击 ’开始测试‘
    # 跳转到新页面
    driver.switch_to.window(driver.window_handles[-1])
    # 显式等待表单加载
    form = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "testform"))
    )
    all_p = form.find_elements(By.TAG_NAME, "p")
    p_data = []
    for index, p in enumerate(all_p, 1):
        print(f"第{index}个P标签内容:", p.text)
        p_data.append(p.text)
    
    all_h5 = form.find_elements(By.TAG_NAME, "h5")
    title_num = 1
    title_dict = {}
    part_data = []
    part_num = -1
    
    for index, h5 in enumerate(all_h5, 1):
        text = h5.text
        class_ = h5.get_attribute('class')
        if '部分' in text:
            part_data.append({
                'name': text,
                'intro': p_data[part_num],
                'title_list': []
            })
            part_num += 1
            title_dict = {}
            continue
    
        text = h5.text
        if class_ == 'mb-3 mt-3':
            print(f'***************这是第{part_num}部分,第{title_num}题************************')
            title_num += 1
            if title_dict:
                part_data[part_num]['title_list'].append(title_dict)
                title_num = 1
            title_dict = {}
            title_dict['title'] = text
            title_dict['select'] = []
            continue
        if title_dict:
            title_dict['select'].append(text)
    
    return part_data
    
    
    def main(url):
    return fetch_datas(url)
    
    
    if __name__ == "__main__":
    url = 'https://pt.sjzdzxl.com/test/holland.html'
    part_data = main(url)
    print(part_data)

全部评论 (0)

还没有任何评论哟~