Python3爬虫(4)--抓取考生的四六级成绩
本文主要写的是利用本地的四六级考生的相关信息,我们通过爬虫将这些信息在四六级考试成绩网上进行查询,然后将考生的成绩保存在本地的过程。由于四六级考生的信息不便透露,本文只是提供了一个思路。
我们使用的是中国高等教育学生信息网(http://www.chsi.com.cn/cet/)作为我们查询的相关网站。
我们打开网站之后,看到的如下面的界面
通过这个查询界面,我们可以知道大概要提交的参数,一个是准考证号,另一个是姓名。下面我们先正常的填入准考证号,姓名,进行查询。
我们发现URL是这个样子的
http://www.chsi.com.cn/cet/query?zkzh=510020162100310&xm=XX(XX是汉字)
我们分析这个URL发现zkzh后面的就是准考证号的内容,xm就是姓名,这样的话获取成绩就变的非常的简单了。我们可以直接将Excel文件中获取到的信息处理为字符串,然后和URL拼接在一起,直接对URL进行访问,就可以得到我们想要的数据了。
这里秉着学习的态度,我们从Excel文件中获得准考证号、姓名等信息, 然后在将成绩信息保存到MySQL数据库内,这里用到了两个包,一个是处理Excel文件的xlrd,另一个是mysql-connector。这两个第三方模块都可以在pip install中直接安装。xlrd用法直通车
我们先将需要用到的信息从Excel文件中获取
def collect(self,i):excel=xlrd.open_workbook('F:\CET\CET.xlsx')sheet=excel.sheets()[0]row_data=sheet.row_values(i)return row_data[5],row_data[6]
得到数据之后,我们就可以将这些数据拼接成URL,然后使用requests的get方法获取网页的内容,这里有两种拼接URL的方式,在代码中体现,可以自由选择。requests直通车
def post(self,user_id,user_name):url='http://www.chsi.com.cn/cet/query?zkzh='+user_id+'&xm='+user_namer=requests.get(url,headers=self.header)
## r=requests.get('http://www.chsi.com.cn/cet/query',params={'zkzh':user_id,'xm':user_name},headers=self.header)print(r.url)return r.text
然后就是解析网页的信息,得到我们要得到的信息,这里可以用正则表达式匹配,也可以直接获取内容,看哪个方便
def scrapy(self,data):soup=bs(data,'html.parser')links=soup.find_all('td')# 4 6 8 10 12n_data=[]i=4while i<13:n_data.append(links[i].get_text().strip())i=i+2return n_data
得到了我们想要的数据信息,就可以存储到数据库内
def stored(self,data,i,user_id,user_name):#在这里采用直接将数据插入到数据库内 也可以直接插入到Excel表格中conn=mysql.connector.connect(user='root',password='',database='spider')cursor=conn.cursor()cursor.execute('insert ignore into cet(id,user_name,user_id,zongfen,tingli,yuedu,xiezuo,cet) values(%s,%s,%s,%s,%s,%s,%s,%s)',[i,user_name,user_id,int(data[1]),int(data[2]),int(data[3]),int(data[4]),data[0]])conn.commit()cursor.close()conn.close()
在通过调度程序,进行调度就可以完成爬取的内容
def spider_main(self):i=1try:while i<100:user_id,user_name=self.collect(i)f=self.post(user_id,user_name)a=self.scrapy(f)self.stored(a,i,user_id,user_name)i=i+1except Exception as e:print(e)
因为网站有防爬虫机制,一般采用sleepde的方式或者设置ip代理,这里通过在存储过程中加大时间开销,省去了sleep的方法,如果有好的建议,请联系我,谢谢。
最后附上MySQL的SQL语句
create table cet(
id int(10) not null primary key,
user_name varchar(20),
user_id varchar(20),
zongfen int(10),
tingli int(10),
yuedu int(10),
xiezuo int(10),
cet varchar(20)
);
到这里爬取四六级成绩的爬虫就完成了,这段代码有很多改进的地方,欢迎大家指正。
Python3爬虫(4)--抓取考生的四六级成绩相关推荐
- python3爬虫基本操作——抓取股票信息
目录 1. requests库发送请求,获取响应内容的字符串格式 2.Beautifulsoup解析并获取指定的内容 3.selenium库 没想到我的第一次 - - 写博客就这样毫无预兆地发生了.其 ...
- Python3爬虫图片抓取
(1)实战背景 上图的网站的名字叫做Unsplash,免费高清壁纸分享网是一个坚持每天分享高清的摄影图片的站点,每天更新一张高质量的图片素材,全是生活中的景象作品,清新的生活气息图片可以作为桌面壁纸也 ...
- Python爬虫采集抓取:Python3.x+Fiddler 采集抓取 APP 数据
随着移动互联网的市场份额逐步扩大,手机 APP 已经占据我们的生活,以往的数据分析都借助于爬虫采集爬取网页数据进行分析,但是新兴的产品有的只有 APP,并没有网页端这对于想要提取数据的我们就遇到了些问 ...
- python3爬虫简易入门图片_Python3爬虫图片抓取
在上一章中,我们已经学会了如何使用Python3爬虫抓取文字,那么在本章教程中,将通过实例来教大家如何使用Python3爬虫批量抓取图片. (1)实战背景 上图的网站的名字叫做Unsplash,免费高 ...
- Python爬虫:抓取智联招聘岗位信息和要求(进阶版)
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:王强 ( 想要学习Python?Python学习交流群 ...
- python爬网页数据用什么_初学者如何用“python爬虫”技术抓取网页数据?
原标题:初学者如何用"python爬虫"技术抓取网页数据? 在当今社会,互联网上充斥着许多有用的数据.我们只需要耐心观察并添加一些技术手段即可获得大量有价值的数据.而这里的&quo ...
- python简单爬虫代码-python爬虫超简单攻略,带你写入门级的爬虫,抓取上万条信息...
原标题:python爬虫超简单攻略,带你写入门级的爬虫,抓取上万条信息 最近经常有人问我,明明看着教程写个爬虫很简单,但是自己上手的时候就麻爪了...那么今天就给刚开始学习爬虫的同学,分享一下怎么一步 ...
- 爬虫数据抓取怎么弄?
爬虫数据抓取是一种自动化的数据采集技术,可以快速.高效地从互联网上获取大量的数据.本文将介绍爬虫数据抓取的基本原理.常用的爬虫框架和工具.爬虫数据抓取的注意事项以及爬虫数据抓取的应用场景. 一.爬虫数 ...
- python 爬虫 数据抓取的三种方式
python 爬虫 数据抓取的三种方式 常用抽取网页数据的方式有三种:正则表达式.Beautiful Soup.lxml 1.正则表达式 正则表达式有个很大的缺点是难以构造.可读性差.不易适用未来 ...
- python抓取网页电话号码_利用正则表达式编写python 爬虫,抓取网页电话号码!...
利用正则表达式编写python 爬虫,抓取网页联系我们电话号码!这里以九奥科技(www.jiuaoo.com)为例,抓取'联系我们'里面的电话号码,并输出. #!/usrweilie/bin/pyth ...
最新文章
- 这些Java8官方挖的坑,你踩过几个?
- const mysql_mysql – 为什么我在解释查询中读取const表后会注意到“不可能”?
- Kali Linux渗透测试实战 2.2 操作系统指纹识别
- wxWidgets:wxColourPickerEvent类用法
- 【渝粤题库】国家开放大学2021春2109刑事诉讼法学题目
- WPF老矣,尚能饭否——且说说WPF今生未来(中):策略
- SQL Server 2008 评估已过期解决方案
- 如何拼局域网所有ip_如何查看局域网内所有ip?
- 一文说清楚什么是时区,夏令时,GMT和CST
- 什么是1u服务器;服务器中的u是什么意思
- 2022年内蒙古医院三基考试传染病学考前冲刺题及答案
- 用户画像第四章(企业级360°用户画像_标签开发_挖掘标签_用户购物性别模型-USG)
- 一个字符等于多少磅?
- Go实现的5G核心网开源项目free5gc源码分析系列 | Gopher Daily (2021.01.08) ʕ◔ϖ◔ʔ
- flutter 九宫格菜单_flutter九宫格图片查看器
- Android——猜数字小游戏
- 手撸 SpringBoot DDD 微服务脚手架
- Kinect v2 Examples with-SDK 提示 技巧和示例简介
- Openjudge:鸡尾酒疗法
- c语言综合作业程序填空,C语言程序填空题及答案
热门文章
- 12306 抢票软件已被限制
- Vue.js 踩坑记 (一)
- 平面弧长极坐标公式的疑问
- Android 出海 Admob 踩坑
- 单目slam LoopClosing之Sim3优化
- Nginx代理高德API(无法地图选点)
- 从Alexander Egyed的论文看程序语言和软件工程的论文写作风格差异
- 计算机网络路由器配置IP地址,电脑查看路由器设置网址(登录IP地址)的方法
- 共话新基建,墨天轮数据库大咖讲坛第一期圆满成功!(附第二批中奖名单)...
- 设计一个python程序来计算显示通过如图2-7所示的管道_python程序设计习题与答案...