使用本文爬取成绩大致有几个步骤:1、提取表格(或其他格式文件——含有姓名,身份证等信息)中的数据,为进行准考证爬取做准备。2、下载准考证文件并提取出准考证和姓名信息。3、根据得到信息进行数据分析和存储。
所有需要的工具库:
import urllib
import requests
import xlrd
import json
import re
import time
import os
import operator
from aip import AipOcr
from selenium import webdriver
from PIL import Image
具体实现:
一、提取姓名身份证信息并获取下载url关键信息
# 创建session访问对象
session = requests.session()
session.headers = {'打开对应网站http://cet-bm.neea.edu.cn/Home/QuickPrintTestTicket,复制cookies,必需!!!'}
# 得到身份证和姓名信息
# 返回一个包含名字和id的列表
def get_name_id():
xls_data = xlrd.open_workbook(r'你的表格.xls')
tables = xls_data.sheets()[0]
for i in range('范围'):
rows = tables.row_values(i)
id = rows[7]
# 对中文进行了url编码处理
name = urllib.parse.quote(rows[5])
yield [name, id]
list_info = get_name_id()
# 经过观察发现下载链接中只有一个sid参数有变化,所以我们下面筛选出sid参数并保存
# 需要手动到网站上点一个验证码, 时间大概在一分钟
# 到时后可能会有变动,请根据具体情况修改
yzm = '验证码'
# 存储最终数据
data = []
for i in list_info:
# 参数provinceCode是省份编码,请根据具体情况及时修改
# 另参数这里我没有用字典形式传入,所以中文转化成了url形式的
res = session.post('http://cet-bm.neea.edu.cn/Home/ToQuickPrintTestTicket',
data='Name={}&verificationCode={}&provinceCode=34&IDNumber={}&IDTypeCode=1'.format(i[0], yzm, i[1]))
# 处理数据 以便存储
txt = res.content.decode('utf8')
txt = txt.replace('\\', '')
sid_one = re.findall("SID\":\"(.*?)\",", txt)[0]
name_ = urllib.parse.unq