相关文章推荐
多情的啄木鸟  ·  CMD提示“不是内部或外部命令,也不是可运行 ...·  11 月前    · 
瘦瘦的青蛙  ·  Python音频处理库pydub的使用示例详 ...·  1 年前    · 
闷骚的黑框眼镜  ·  如何查看github ...·  1 年前    · 
爱玩的馒头  ·  java设置边框颜色_swing中JPane ...·  1 年前    · 
豪情万千的山羊  ·  leetcode算法题分享,从字符串开始 - 知乎·  1 年前    · 
小百科  ›  教您最简单粗暴的MATLAB入门级爬虫2开发者社区
matlab
果断的冲锋衣
1 年前
作者头像
企鹅号小编
0 篇文章

教您最简单粗暴的MATLAB入门级爬虫2

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
社区首页 > 专栏 > 企鹅号快讯 > 教您最简单粗暴的MATLAB入门级爬虫2

教您最简单粗暴的MATLAB入门级爬虫2

作者头像
企鹅号小编
发布 于 2018-01-16 11:16:11
783 0
发布 于 2018-01-16 11:16:11
举报

感谢吴老师的《数据新闻与网络数据挖掘》课程

感谢各位捧场的小伙伴们

本文适用对象为编程零基础者

仅供学习交流使用,请勿用于商业用途。

通过这样的方法,可以类似得到其他信息,这里编写了爬取酒店名称、经度、纬度的代码:

代码运行后,我们可以在MATLAB的Workspace窗口中,查得已经爬取的信息:

但是,在网页源代码中,星级的标注多为字符串,例如:'hotel_stars05'代表国家旅游局评定五星级,'hotel_diamond05'代表携程用户评定的5钻。若直接爬取字符串,不方便后续的处理,我们更希望得到的是代表星级的数值‘4’或‘5’。

这里我们可以用MATLAB中的字符串替换函数strrep()对其进行替换,

star=strrep(star,'hotel_diamond05','5');

它在变量star中查找'hotel_diamond05',并将'hotel_diamond05'替换为‘5’。

以此类推,将所有的字符串都进行替换,即可将酒店星级数值化:

成功提取一则酒店的信息之后,我们可以借助程序的循环结构,对第一页的酒店信息进行爬取。循环结构即设定条件,使程序在满足该条件时,循环执行相同操作。

而在爬取这一页的酒店信息时,需要循环执行的相同操作是提取每一则酒店的id、名称等信息,接下来需要寻找可以设定的循环条件。

观察之前的代码

我们将第一则信息存在info中:

info=s1(tagloc(1):tagloc(2))

而第一则信息提取后,info中的内容就不需要了,我们可以将第二则酒店的信息存入info,覆盖第一则酒店的信息:

info=s1(tagloc(2):tagloc(3))

以此类推,如果有n则酒店信息,我们需要爬取第i则信息,代码就可以写作:

info=s1(tagloc(i):tagloc(i+1))

而我们可以通过n=length(taploc),将taploc数组的长度(taploc中存的数字数量)记在n中,即‘{’位置信息的数量,这就是一页网页中的酒店数量n。

但是在这里,我们不能用n作为循环的结尾,因为若i为n(i=n)时,

info=s1(tagloc(n):tagloc(n+1))

程序出错,因为tagloc中只有n个数,tagloc(n+1)不存在。

所以比较简单的办法是:我们可以先通过循环取前n-1则的酒店信息,单独提取本页最后一则酒店的信息。将酒店信息部分的结尾作为最后一个酒店的结尾进行定位,存于tagend中:

这样,我们就可以单独读取最后一则酒店信息进行爬取:

info=s1(tagloc(n):tagend)

接下来,我们可以进行循环部分代码的编写,这里选择循环中的一种:for循环,其代码以for开始,end结束,for之后紧跟的是循环变量及其循环范围的设置,for与end之间的是需要重复执行的语句。具体代码如下,i从1开始,每执行一轮后,会自增1,直到n-1:

到这里,一页内的酒店信息我们都可以成功爬取了,这里介绍输出函数fprintf,可以实时看到结果:

fprintf(“%s\n”,id)

这条语句中,双引号内是需要输出的内容框架,%s代表的是一个字符串型的变量,‘\n’代表输出一个回车,也就是我们的输出是一个字符串并加上回车键进行分隔的形式。这个输出的框架搭好之后,我们需要对其内容进行填充,即我们在逗号之后写上id,表示变量id的内容是作为对%s的填补。

结果如下:

大家可以试着加上其他内容,也可以根据个人喜好输出的框架,例如可以用’\t’(tab键)替代‘\n’进行分隔。由于我们爬取时储存类型都为字符串,因此每一处信息只要用一个“%s”表示即可。

当然,循环结构也可以实现从爬1页酒店信息到爬n页酒店信息,大家可先行尝试!

本文来自企鹅号 - 路在羊在 媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

爬虫

本文来自企鹅号 - 路在羊在 媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

爬虫
评论
登录 后参与评论
0 条评论
热度
最新
登录 后参与评论
关于作者
企鹅号小编
腾讯
0
文章
0
累计阅读量
0
获赞
前往专栏
领券
  • 社区

    • 专栏文章
    • 阅读清单
    • 互动问答
    • 技术沙龙
    • 技术视频
    • 团队主页
    • 腾讯云TI平台
  • 活动

    • 自媒体分享计划
    • 邀请作者入驻
    • 自荐上首页
    • 技术竞赛
  • 资源

    • 技术周刊
    • 社区标签
    • 开发者手册
    • 开发者实验室
  • 关于

    • 社区规范
    • 免责声明
    • 联系我们
    • 友情链接

腾讯云开发者

扫码关注腾讯云开发者

扫码关注腾讯云开发者

领取腾讯云代金券

热门产品

  • 域名注册
  • 云服务器
  • 区块链服务
  • 消息队列
  • 网络加速
  • 云数据库
  • 域名解析
  • 云存储
  • 视频直播

热门推荐

  • 人脸识别
  • 腾讯会议
  • 企业云
  • CDN加速
  • 视频通话
  • 图像分析
  • MySQL 数据库
  • SSL 证书
  • 语音识别

更多推荐

  • 数据安全
  • 负载均衡
  • 短信
  • 文字识别
  • 云点播
  • 商标注册
  • 小程序开发
  • 网站监控
  • 数据迁移

Copyright © 2013 - 2023 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有

深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569

腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287

问题归档 专栏文章 快讯文章归档 关键词归档 开发者手册归档 开发者手册 Section 归档

Copyright © 2013 - 2023 Tencent Cloud.

All Rights Reserved. 腾讯云 版权所有

登录 后参与评论
 
推荐文章
多情的啄木鸟  ·  CMD提示“不是内部或外部命令,也不是可运行的程序或批处理文件” - Microsoft Community
11 月前
瘦瘦的青蛙  ·  Python音频处理库pydub的使用示例详解_python_脚本之家
1 年前
闷骚的黑框眼镜  ·  如何查看github star排行榜?-CSDN博客
1 年前
爱玩的馒头  ·  java设置边框颜色_swing中JPanel如何实现分组框的效果以及设置边框颜色_IKEA宜家家居的博客-CSDN博客
1 年前
豪情万千的山羊  ·  leetcode算法题分享,从字符串开始 - 知乎
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
小百科 - 百科知识指南
© 2024 ~ 沪ICP备11025650号