@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()函数。从网页中找到20122016年国防科技大学录取分数线统计网页的子链接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



网页抓取及信息提取(二)相关推荐

  1. EduCoder答案-网页抓取及信息提取

    简介 答案查询的入口网页版 其他各类实训答案的目录见这里 答案获取的方法简介见这里 并不是所有的关卡都有答案,有些只有部分关卡有 不要直接复制答案哦 网页抓取及信息提取 >>>查看 ...

  2. 网页抓取及信息提取(一)

    @R星校长 第1关:利用URL获取超文本文件并保存至本地 当我们想要在浏览器中打开一个网页时,需要在浏览器的地址栏中输入该网页的url,例如在地址栏中输入百度搜索网站的首页url:https://ww ...

  3. 爬虫实战——网页抓取及信息提取

    第1关:利用URL获取超文本文件并保存至本地文本文件 任务描述 当我们想要在浏览器中打开一个网页时,需要在浏览器的地址栏中输入该网页的url,例如在地址栏中输入百度搜索网站的首页url:https:/ ...

  4. 网页抓取及信息提取(三)

    @R星校长 第3关:网页数据分析 任务描述 下图是2016年国防科技大学分数线的网页,在浏览器中我们可以看到,各省的最高分.最低分.平均分都整齐地排列自在表格中.一个网页的源代码时常有成百上千行,其中 ...

  5. 几种PHP实现网页抓取的程序代码

    网页抓取就像搜索引擎一个可以去自动抓取其它服务器上的内容了,下面我整理的几个php常用做法,大家一起来看看. 抓取某一个网页中的内容,需要对DOM树进行解析,找到指定节点后,再抓取我们需要的内容,过程 ...

  6. python初学者爬虫教程(二)动态网页抓取

    python爬虫教程(二)动态网页抓取 解析真实地址抓取 通过selenium 模拟浏览器抓取 selenium 安装与测试 selenium爬取一条评论 selenium获取文章的所有评论 sele ...

  7. 网页抓取/数据抽取/信息提取软件工具包MetaSeeker

    MetaSeeker是一个Web网页抓取/数据抽取/页面信息提取工具包,能够按照用户的指导,从Web页面上筛选出需要的信息,并输出含有语义结构的提取结果文件(XML文件),众所周知,Web页面显示的信 ...

  8. Java 网络实例二(查看主机指定文件的最后修改时间、Socket实现多线程服务器程序、Socket连接到指定主机、网页抓取)

    查看主机指定文件的最后修改时间 import java.net.URL; import java.net.URLConnection; import java.util.Date; import ja ...

  9. 用TinySpider进行网页抓取实例

    本例中用到的maven坐标变化如下: <dependency> <groupId>org.tinygroup</groupId> <artifactId> ...

  10. 网页抓取:PHP实现网页爬虫方式小结

    抓取某一个网页中的内容,需要对DOM树进行解析,找到指定节点后,再抓取我们需要的内容,过程有点繁琐.LZ总结了几种常用的.易于实现的网页抓取方式,如果熟悉JQuery选择器,这几种框架会相当简单. 一 ...

最新文章

  1. python有道翻译法语-使用python2爬取有道翻译
  2. 多索引表 (2)基本概念
  3. java mvc中重复提交表单,spring mvc 防止重复提交表单的两种方法,推荐第二种
  4. rsync java_Linux 同步工具rsync学习
  5. .net mvc 导出excel表格
  6. 《延世大学韩国语教程2》第二十课 办公室(上)
  7. Redis 低成本、高可用设计,牛逼!
  8. java 正则表达式 html,java正则表达式语法大全
  9. linux获取本地ip命令,Shell获取当前主机ip地址
  10. 订单超时未支付自动关闭实现方案
  11. 3D点云之PCL学习之路(一)
  12. 大龄程序员的出路在哪里?
  13. 手机停机照样可以免费无限量上网
  14. QQ邮箱取消免费扩容;苹果搜索引擎“胎死腹中”,核心成员已回归谷歌麾下;Xcode 14导致应用体积大增|极客头条
  15. Const用法总结:Const,Const函数,Const变量,函数后面的Const (转)
  16. android备份固件,安卓固件管家(Rom Manager Premium)
  17. Android Studio第14课百度地图,获取相册和拍照
  18. kibana discover查询语法
  19. 中企动力:地方门户网站运营之推广经验分享
  20. Whale帷幄 - 车企数字化营销转型

热门文章

  1. 如何用亿图软件绘制甘特图
  2. 完美池宇峰畅谈创业点滴 男怕入错行
  3. iPad播放网页视频(h5 video)失败的处理方法(Django网站)
  4. web网站搭建(nginx优化)二
  5. python开发板 树莓派_树莓派3代B+型 Raspberry Pi 3b+电脑linux开发板python编程
  6. 如何自动生成一本epub电子书
  7. 使用idea运行CS项目后“客户端页面加载不出来“的解决方法
  8. Android使用DragAndDrop拖拽效果实现宫格位置变换
  9. Android中的RAM、ROM、SD卡以及各种内存的区别
  10. 小数转化为百分数(保留小数点后一位有效数字)