import csv
import requests
from lxml import etree
def htmls(url,headers):
html_oil=requests.get(url=url,headers=headers).text#用requests方法拿到源代码
return html_oil
#解析2022年全国硕士研究生招生考试考生进入复试的初试成绩基本要求(学术学位类)数据
def getinfo(html_oil):
source=etree.HTML(html_oil)#将传进去的源代码转变成_Element对象
alls = source.xpath('//table[@class="table01"]/tbody')[0] # 获取所需数据总节点
title = source.xpath('/html/body/div[1]/div[2]/div[3]/h2/span/text()')[0]#获取标题
alls1 = alls.xpath('./tr') # 获取所需数据所有节点
datas = [] # 建立一个列表存储所有数据
data = alls1[2].xpath('./td/text()')#获取数据节点
datas.append(data[:7])#去除多余的值
for i in range(3, len(alls1)):
data = alls1[i].xpath('./td/text()') # 遍历所有节点并获得数据
datas.append(data) # 将数据存入datas列表
print(datas)#打印结果
return datas,title
# 2022年全国硕士研究生招生考试考生进入复试的初试成绩基本要求(专业学位类)数据
def getinfo1(html_oil):
source = etree.HTML(html_oil)#将传进去的源代码转变成_Element对象
alls = source.xpath('//table[@class="table01"]/tbody')[0] # 获取所需数据总节点
title1 = source.xpath('/html/body/div[1]/div[2]/div[3]/h2/span/text()')[0]#获取标题
alls1 = alls.xpath('./tr') # 获取所需数据所有节点
datas1 = [] # 建立一个列表存储所有数据
data = alls1[2].xpath('./td/text()')#获取数据节点
datas1.append(data[:7])#去除多余的值
for i in range(3, len(alls1)):
data = alls1[i].xpath('./td/text()') # 遍历所有节点并获得数据
if len(data)>7:
data=data[2:]#去除空值
datas1.append(data) # 将数据存入datas1列表
else:
datas1.append(data) # 将数据存入datas1列表
print(datas1)#打印结果
return datas1, title1
# 存储为csv
def saveinfo(datas,title,header):
with open('static/{}.csv'.format(title), 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f) # 打开csv文件
writer.writerow(header)#写入标题
writer.writerows(datas) # 写入数据
if __name__ == '__main__':
header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.53'
}#UA伪装
urls ='https://yz.chsi.com.cn/kyzx/kp/202203/20220311/2172246782.html'#网址
html_oil=htmls(url=urls,headers=header)#获取源代码
datas,title=getinfo(html_oil)#解析数据
headerbt = ['学科门类(专业)名称', '总分(A类考生)', 'A类考生单科(满分=100分)', 'A类考生单科(满分>100分)', '总分(B类考生)', 'B类考生单科(满分=100分)', 'B类考生单科(满分>100分)']#设置标题
saveinfo(datas=datas,title=title,header=headerbt)#存储数据
urls1 = 'https://yz.chsi.com.cn/kyzx/kp/202203/20220311/2172246781.html'#网址
html_oil1 = htmls(url=urls1, headers=header)#获取源代码
datas1,title1=getinfo1(html_oil1)#解析数据
headerbt1 = ['学科门类(专业)名称', '总分(A类考生)', 'A类考生单科(满分=100分)', 'A类考生单科(满分>100分)', '总分(B类考生)', 'B类考生单科(满分=100分)', 'B类考生单科(满分>100分)']#设置标题
saveinfo(datas=datas1,title=title1,header=headerbt1)#存储数据
- 1
- 2
- 3
前往页