前言
几天的对象一个中国高考相关的网站,提供高考资讯、批次线查询、志愿填报指导、高校信息等服务,对中国高中学生和家长非常有用。
具体的步骤如下:
库的引入
首先,我们需要导入一些必需库:
# 时间模块
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 文件,方便日后进行分析和处理。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
一、前言 随着项目的发展,前端SPA应用的规模不断加大、业务代码耦合、编译慢,导致日常的维护难度日益增加。同时前端技术的发展迅猛,导致功能扩展吃力,重构成本高,稳定性低。因此前端微服务应运而生。 前端微服务优势 1.复杂度可控: 业务模块解耦,避免代码过大,保…