有一种非常常见并且相对简单的网络爬虫,工作流程大概是这样的:

  • 访问目标网页

  • 提取目标网页内表格信息

  • 写入excel文件并保存

初次实践,我决定尝试写一个这样的爬虫。经过一番构思,我准备把爬取新乡一中官网上的高考录取名单作为自己的第一个案例。

写一个爬虫程序的想法是上周一(10月16日)冒出来的,然而那时的我对爬虫基本还一无所知,所以我首先恶补了一系列关于爬虫的知识,然后又去了解了一些将要用到的第三方库的用法。由于与此同时我还在狂刷C语言的课程,一直拖到前天(11月3日)我才做完了这个案例。

那么一起来看看这个案例吧!

需求分析&前期准备

目标:

用Python写一个程序,爬取新乡市一中官网上的高考录取名单,以姓名、录取高校两列的形式填入excel表格并保存在本地。

步骤拆分:

  1. 确定并访问目标网页

  2. 提取网页源代码

  3. 解析网页源代码

  4. 提取表格信息

  5. 建立excel文档、写入数据并保存

准备:

首先在中国大学mooc上恶补了一波关于网络爬虫的相关知识,主要是刷完了北京理工大学嵩天老师的《Python网络爬虫与信息提取》:

在这个过程中也初步了解了requests库和BeautifulSoup库的基本用法

然后发现自己需要了解一定的HMTL知识,于是又在mooc上刷了《HTML5网页前端设计》(青岛职业技术学院,苗彩霞)的前三个单元

接着又发现把信息写入excel文档需要用到Python第三方库xlwt库,于是找资料学习了xlwt库的基本用法:

OK,准备工作做完了,开始实践!!!

Part 1. 确定目标网页

其实一开始是想爬取20届的高考录取名单的,结果到一中官网上一看居然只更新到了2018届(而且名单还不全),算了,那就将就一下吧。

打开网页,可以看到我们所需要的信息是以表格的形式显示在页面上的。一共有两列,左边一列是“姓名”,右边一列是“录取学校”。我们的目的用程序将这两列信息爬取下来并仍以两列表格的形式填入excel当中。

查看网页源代码,发现该表格是用经典的加标签实现的。每对标签中是一行的信息,包括两个标签,即两个单元格。而每个标签中又包含了

子标签,这些子标签对字体大小、颜色等属性进行了定义。而我们需要的信息夹在这些子标签最当中,紧邻的标签是标签。

对目标网页的结构有了初步了解之后,开始写代码!

Part 2.写代码

首先导入需要用到的库:

import requestsimport bs4from bs4 import BeautifulSoupimport xlwt

根据功能将程序划分为为了四个模块,定义了四个函数

1.gethttps函数,访问目标网页,提取并返回网页源代码

def gethttps(url):    try:        kv = {"user-agent":"Mozilla/5.0"}        r = requests.get(url,timeout=30,headers=kv)        r.raise_for_status()        r.encoding = r.apparent_encoding        return r.text     except:        return "err"

2.filllist函数,解析网页源代码,提取所需信息

def filllist(ulist,html):    soup = BeautifulSoup(html,"html.parser")    for tr in soup.find('tbody').children:        if isinstance(tr,bs4.element.Tag):            fonts = tr('font')            ulist.append([fonts[0].string, fonts[1].string])

3.printlist函数,建立excel文档,设置相关格式,将数据填入excel文档。

def printlist(ulist):    workbook = xlwt.Workbook(encoding='utf-8')    worksheet = workbook.add_sheet('My Worksheet')    worksheet.col(0).width = 3333    worksheet.col(1).width = 5555       for i in range(len(ulist)):        u = ulist[i]        for j in range(2):            worksheet.write(i,j, label = u[j])    workbook.save('新乡一中2018年高考录取.xls')

4.main函数,即程序主函数。

def main():    url = "http://www.hnxxyz.com/news/37_10334"    unifo = []    html = gethttps(url)    filllist(unifo,html)    printlist(unifo)

最后调用main函数:

main()

Part 3.运行程序

写完了代码,运行程序~发现在当前路径中生成了一个excel文件:

打开看一看:

成了!!!

Part 4.举一反三

稍微改了改代码,又成功爬取了2020中国大学100强排行榜:

效果很理想!

补充:

昨天推送了初识网络爬虫这篇文章,忘记在最后注明参考资料了!

只好在这里补上了:

参考资料:

1.百度百科:网络爬虫

2.中国大学mooc课程《Python网络爬虫及信息提取(第9次开课)》北京理工大学.嵩天

3.中国大学mooc课程《Python网络爬虫程序技术》深圳信息职业技术学院.黄锐军

4.《Python网络爬虫》传播智客.无崖子

关注我,

一起学编程!

@宇梵文书

python爬取天眼查存入excel表格_爬虫案例1——爬取新乡一中官网2018届高考录取名单...相关推荐

  1. python爬虫怎么爬小说_Python 新手] 爬虫练习:爬取起点中文网的小说排行并存入 excel 表格中...

    使用的 python 库 1.request 库,用于向服务器发起请求信息. 2.lxml 库,用于解析服务器返回的 HTML 文件. 3.time 库,设置爬取时间差,防止短时间内多次页面请求而被限 ...

  2. Python爬虫项目:爬取JSON数据存储Excel表格与存储图片

    随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战.搜索引擎(Search Engine),例如传统的通用搜索引擎AltaVista,Yahoo!和Googl ...

  3. 使用python程序抓取天眼查,企查查和爱企查上的企业基本信息

    本文说明使用python程序自动抓取天眼查或者企查查上的企业基本信息.本文中的程序仅供学习参考,请通过正规渠道获取相应的数据资产. 工程目录如下: w3目录下内容为: 工程中的部分源码如下. 文件pa ...

  4. Python自动化办公(一) :滴滴行程单信息提取存入excel表格 2021-04-13

    ython自动化办公(一):滴滴行程单信息提取存入excel表格 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示: ...

  5. python读取一个TXT转换成EXCEL表格

    [任务]:python读取一个TXT转换成EXCEL表格 [坑1]pycharm安装后代码区不能编辑,是由于最新的pycharm在安装时自动装了vimVim插件, 方法一:在tools-Vim emu ...

  6. python使用xlsx和pandas处理Excel表格的操作步骤

    python的神器pandas库就可以非常方便地处理excel,csv,矩阵,表格 等数据,下面这篇文章主要给大家介绍了关于python使用xlsx和pandas处理Excel表格的操作步骤,文中通过 ...

  7. python3.6爬虫案例:爬取某网站所有PPT(上)。

    写在前面   这次实现之前的flag:爬取第一ppt网站的所有PPT,当然网站中有其他很多的学习资料,这次只爬取PPT.不仅可以平时做模板演示用,还可以练习爬虫,岂不美滋滋.闲话不多说,进入正题. 先 ...

  8. python3.6爬虫案例:爬取朝秀帮图片

    一.写在前面 之前写的两篇博客: python3.6爬虫案例:爬取百度歌单点击打开链接: python3.6爬虫案例:爬取顶点小说(爱看小说同学的福利)点击打开链接 第一个案例写了如何在百度音乐歌单中 ...

  9. Python爬虫学习之爬取豆瓣音乐Top250存入Excel表格中

    前言 目标网站:https://music.douban.com/top250 任务: 爬取豆瓣音乐Top250的歌曲名 爬取豆瓣音乐Top250的歌曲对应的表演者.发行时间和音乐流派(分别对应下图斜 ...

最新文章

  1. New Video Game Controlled By Kissing
  2. R语言将dataframe数据从宽表(wide)变为长表(long)实战:tidyr包的gather函数、cdata包的unpivot_to_blocks函数、data.table使用melt函数
  3. php laravel 框架 APP_KEY 的作用
  4. 【AutoML】AutoML专栏上线,跟Google一起见证调参党的末日?
  5. VS2015安装简单的C#单元测试
  6. oracle表分层,sql – 对非分层数据的Oracle分层查询
  7. 嵌入式 linux restful,嵌入式 RESTful 框架 express.java
  8. hive 配置mysql_Hive的mysql安装配置
  9. 因式分解 (10 分)
  10. oracle 更新flwid,Oracle分析函数RANK(),ROW_NUMBER(),LAG()等的使用方法
  11. qdebug 调试 输出乱码_Python里三个最高逼格的调试神器
  12. thinkphp与传统php,老生常谈php中传统验证与thinkphp框架(必看篇)
  13. 关于hibernate的mappedBy的使用:
  14. E: Unable to locate package mingw32
  15. IMU(陀螺仪)角速度测量原理-科氏力测旋转角速度
  16. AI及相关领域国际会议级别
  17. An中的共轭类的个数
  18. nb信号和4g信号_NB-IoT的同步信号解析
  19. 1分钟链圈|腾讯区块链(天津)被责令更名;Casper更新可能导致社区再次分裂...
  20. [程序人生]--人生架构三个层次:智慧是大脑,选择是躯干,知识文化是血肉

热门文章

  1. KD树是什么? 为什么要用KD树? KD树怎么用? KD树和KNN的关联是什么?
  2. 珍惜当下、Relish the Moment
  3. cmd删除oracle监听,oracle数据库监听删除
  4. 大学生计算机基础excel视频,大学生计算机基础Excel.doc
  5. php备份漏洞源码,原创|从 PHP Git 源码的查找导致 PHP 安全漏洞的代码变更
  6. windows 10 anaconda python 3.7 安装 pytorch-gpu
  7. Apache软件历史版本下载地址
  8. oracle中key,mysql中的key在oracle中是什么
  9. ajax获取php echo值,ajax 接受 php echo 与 return 区别
  10. 贪吃蛇程序 php,php,函数 Web程序 - 贪吃蛇学院-专业IT技术平台