「高考网站+Python+Selenium」自动化PC,轻松获得计算机专业大学信息 希望以上标题能够启发到你

前言

几天的对象一个中国高考相关的网站,提供高考资讯、批次线查询、志愿填报指导、高校信息等服务,对中国高中学生和家长非常有用。

具体的步骤如下:

库的引入

首先,我们需要导入一些必需库:

# 时间模块
import time
# 自动化测试模块
from selenium import webdriver
# 保存数据
import csv
  • time 模块:用于控制程序的速度,以防止被网站封 IP。
  • selenium 模块:用于模拟浏览器操作,可以解决一些反爬机制,如JavaScript渲染等。
  • csv 模块:用于将数据存储到 CSV 文件中。

打开浏览器及访问网页

然后,我们需要打开 Chrome 浏览器,并访问高考网站上计算机专业的页面:

# 打开浏览器
driver = webdriver.Chrome()
# 访问网站
driver.get('https://www.gaokao.cn/special?fromcoop=pddh&subjectCategory=%E5%B7%A5%E5%AD%A6&subjectName=%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%B1%BB')
# 延时等待 网页元素加载
driver.implicitly_wait(10)

这里使用了 selenium 模块中的 webdriver 类来打开 Chrome 浏览器,并通过 get 方法,访问高考网站上计算机专业的页面。我们同时也使用了 implicitly_wait 方法,设置等待10秒钟,以确保所需网页元素已经完全加载。

获取所有大学的元素,并逐一打开每个大学的信息页面。

   lis = driver.find_elements_by_css_selector('.major-list_setSchool__3Nr1N')
   for li in lis:
       li.click()
       handles = driver.window_handles
       driver.switch_to.window(handles[-1])

使用for循环遍历每一个获取的学校名称。使用click功能模拟鼠标点击当前学校名称进入到另外一个包含数据的子页面。

进入大学的信息页面后,利用死循环不断地翻页,并提取每页中每个大学的基本信息。

   while True:
       driver.implicitly_wait(10)
       time.sleep(1)
       divs = driver.find_elements_by_css_selector('.school-tab_schoolInfo__1mNye')
       for div in divs:
           # 提取大学的基本信息并保存到 CSV 文件中
           # ...
       frame = driver.find_element_by_css_selector('.ant-pagination-next')
       next_page = frame.get_attribute('aria-disabled')
       if next_page == 'true':
           break
       elif next_page == 'false':
           frame.click()

使用while True语句进入死循环,在每一次循环中,使用find_elements_by_css_selector获取每一个学校对应的标签内容,使用try except语句进行错误处理,将获取到的数据写入到CSV文件中。

在循环结束之前,通过frame.click()的方式获取下一页网页,以遍历所有网页元素。如果获取的元素没有下一页,退出循环。

关闭当前信息页面,回到初始页面,继续遍历下一个大学的信息页面。

   driver.close()
   driver.switch_to.window(handles[0])

创建 CSV 文件

接着,我们需要创建 CSV 文件,并且写入表头:

# 创建文件
f = open('data1.csv', mode='w', encoding='utf-8', newline='')
# 设置表头
csv_writer = csv.DictWriter(f, fieldnames=[
    '学校',
    'tag1',
    'tag2',
    'tag3',
    'tags',
])
# 写入表头
csv_writer.writeheader()

这里使用了 Python 中自带的 open 函数来创建名为 data1.csv 的文件。然后,我们使用 csv 模块的 DictWriter 类来创建一个写入对象,用于写入 CSV 文件。该类的 fieldnames 参数用于设置表头,即 CSV 文件的第一行。接着,我们调用 writeheader 函数,将表头写入 CSV 文件中。

通过这种方式,我们可以将高考网站中计算机专业的大学信息爬取到本地,并且保存为 CSV 文件,方便日后进行分析和处理。

你可能感兴趣的:(python,高考,selenium)