网页抓取及信息提取(二)
@R星校长
第2
关:提取子链接
上一关我们学习了如何访问给定的网页并保存信息到本地,本关我们要从上一关访问的网页中提取出嵌套的url
地址,即实现子链接的提取。
相关知识
课程视频《网页数据 - 获取url子链接》
下面通过文字进一步详细描述本关子链接提取的实现方法。
网页信息中的子链接
一个网站常常是一个主页中包含许多子链接,例如:
点击上图国防科技大学本科招生信息网的第一行“国防科技大学2016年录取分数统计”,就能跳转到其子网页:
子网页的网址为:
http://www.gotonudt.cn/site/gfkdbkzsxxw/lqfs/info/2017/717.html
这些链接一般保存在主页html
源代码标签中的href
属性值中,如下图所示:
如上图所示,这是我们在第二关保存的文本文件内容的一部分,我们发现href
的值为:/site/gfkdbkzsxxw/lqfs/info/2017/717.html
,刚好和子网页网址的后面一段相同,这就需要我们用到第一关的背景知识:
完整的URL
= 协议
+ 域名
+ 资源在服务器上的路径
,
即子网页网址
= "http://"
+ "www.gotonudt.cn"
+ "/site/gfkdbkzsxxw/lqfs/info/2017/717.html"
。
字符串查找find()方法
Python字符串中find()
方法检测字符串中是否包含子字符串str,如果指定 beg(开始) 和end
(结束)范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1
。
下面具体看下这个函数:find(str, beg=0, end=len(string))
:
str
:指定检索的字符串;beg
:开始索引,默认为0
;end
:结束索引,默认为字符串的长度;返回值
:如果包含子字符串则返回子字符串开始的索引值,否则返回-1
。
下面给出了具体的使用示例:
string = r'<li class="flt"><a href="/site/gfkdbkzsxxw/lqfs/info/2017/717.html" target="_blank"><font color="000000">国防科技大学2016年录取分数统计</font></a></li>'
index = string.find("国防科技大学2016年录取分数统计")
print(index)
print(string[index-1])
输出结果:
105
>
针对上述结果,我们可以看到子字符串"国防科技大学2016年录取分数统计"
在string
中出现过,且子串开头的国在string
中的索引为105
(即第一行输出),string
[104
]是国
前面的>
字符(即第二行输出)。
编程要求
仔细阅读网页源代码信息,补全step2()
函数。从网页中找到2012
到2016
年国防科技大学录取分数线统计网页的子链接url
数据并提取出来,具体来说:
使用find()
函数定位这五个url
,并保存在列表urls
中(顺序从2016
-2012
倒序)。
注意:提取的超链是相对地址,需要加上站点域名,拼接成完整的
URL
。
开始你的任务吧,祝你成功!
# -*- coding: utf-8 -*-import urllib.request as req# 国防科技大学本科招生信息网中录取分数网页URL:
url = 'http://www.gotonudt.cn/site/gfkdbkzsxxw/lqfs/index.html' # 录取分数网页URL
webpage = req.urlopen(url) # 按照类文件的方式打开网页
data = webpage.read() # 一次性读取网页的所有数据
data = data.decode('utf-8') # 将byte类型的data解码为字符串(否则后面查找就要另外处理了)def step2():
# 建立空列表urls,来保存子网页的urlurls = []# 请按下面的注释提示添加代码,完成相应功能
#********** Begin *********#
# 从data中提取2016到2012每一年分数线子网站地址添加到urls列表中years = [2016, 2015, 2014, 2013,2012]for year in years:index = data.find("国防科技大学%s年录取分数统计" %year)href = data[index-80:index-39] # 根据各个特征串提取url子串website = 'http://www.gotonudt.cn'urls.append(website+href)
#********** End **********#return urls
网页抓取及信息提取(二)相关推荐
- EduCoder答案-网页抓取及信息提取
简介 答案查询的入口网页版 其他各类实训答案的目录见这里 答案获取的方法简介见这里 并不是所有的关卡都有答案,有些只有部分关卡有 不要直接复制答案哦 网页抓取及信息提取 >>>查看 ...
- 网页抓取及信息提取(一)
@R星校长 第1关:利用URL获取超文本文件并保存至本地 当我们想要在浏览器中打开一个网页时,需要在浏览器的地址栏中输入该网页的url,例如在地址栏中输入百度搜索网站的首页url:https://ww ...
- 爬虫实战——网页抓取及信息提取
第1关:利用URL获取超文本文件并保存至本地文本文件 任务描述 当我们想要在浏览器中打开一个网页时,需要在浏览器的地址栏中输入该网页的url,例如在地址栏中输入百度搜索网站的首页url:https:/ ...
- 网页抓取及信息提取(三)
@R星校长 第3关:网页数据分析 任务描述 下图是2016年国防科技大学分数线的网页,在浏览器中我们可以看到,各省的最高分.最低分.平均分都整齐地排列自在表格中.一个网页的源代码时常有成百上千行,其中 ...
- 几种PHP实现网页抓取的程序代码
网页抓取就像搜索引擎一个可以去自动抓取其它服务器上的内容了,下面我整理的几个php常用做法,大家一起来看看. 抓取某一个网页中的内容,需要对DOM树进行解析,找到指定节点后,再抓取我们需要的内容,过程 ...
- python初学者爬虫教程(二)动态网页抓取
python爬虫教程(二)动态网页抓取 解析真实地址抓取 通过selenium 模拟浏览器抓取 selenium 安装与测试 selenium爬取一条评论 selenium获取文章的所有评论 sele ...
- 网页抓取/数据抽取/信息提取软件工具包MetaSeeker
MetaSeeker是一个Web网页抓取/数据抽取/页面信息提取工具包,能够按照用户的指导,从Web页面上筛选出需要的信息,并输出含有语义结构的提取结果文件(XML文件),众所周知,Web页面显示的信 ...
- Java 网络实例二(查看主机指定文件的最后修改时间、Socket实现多线程服务器程序、Socket连接到指定主机、网页抓取)
查看主机指定文件的最后修改时间 import java.net.URL; import java.net.URLConnection; import java.util.Date; import ja ...
- 用TinySpider进行网页抓取实例
本例中用到的maven坐标变化如下: <dependency> <groupId>org.tinygroup</groupId> <artifactId> ...
- 网页抓取:PHP实现网页爬虫方式小结
抓取某一个网页中的内容,需要对DOM树进行解析,找到指定节点后,再抓取我们需要的内容,过程有点繁琐.LZ总结了几种常用的.易于实现的网页抓取方式,如果熟悉JQuery选择器,这几种框架会相当简单. 一 ...
最新文章
- python有道翻译法语-使用python2爬取有道翻译
- 多索引表 (2)基本概念
- java mvc中重复提交表单,spring mvc 防止重复提交表单的两种方法,推荐第二种
- rsync java_Linux 同步工具rsync学习
- .net mvc 导出excel表格
- 《延世大学韩国语教程2》第二十课 办公室(上)
- Redis 低成本、高可用设计,牛逼!
- java 正则表达式 html,java正则表达式语法大全
- linux获取本地ip命令,Shell获取当前主机ip地址
- 订单超时未支付自动关闭实现方案
- 3D点云之PCL学习之路(一)
- 大龄程序员的出路在哪里?
- 手机停机照样可以免费无限量上网
- QQ邮箱取消免费扩容;苹果搜索引擎“胎死腹中”,核心成员已回归谷歌麾下;Xcode 14导致应用体积大增|极客头条
- Const用法总结:Const,Const函数,Const变量,函数后面的Const (转)
- android备份固件,安卓固件管家(Rom Manager Premium)
- Android Studio第14课百度地图,获取相册和拍照
- kibana discover查询语法
- 中企动力:地方门户网站运营之推广经验分享
- Whale帷幄 - 车企数字化营销转型
热门文章
- 如何用亿图软件绘制甘特图
- 完美池宇峰畅谈创业点滴 男怕入错行
- iPad播放网页视频(h5 video)失败的处理方法(Django网站)
- web网站搭建(nginx优化)二
- python开发板 树莓派_树莓派3代B+型 Raspberry Pi 3b+电脑linux开发板python编程
- 如何自动生成一本epub电子书
- 使用idea运行CS项目后“客户端页面加载不出来“的解决方法
- Android使用DragAndDrop拖拽效果实现宫格位置变换
- Android中的RAM、ROM、SD卡以及各种内存的区别
- 小数转化为百分数(保留小数点后一位有效数字)