当前位置: 首页 > article >正文

用R抓取拉手网深圳地区的美食数据--增加商店地址信息

自从上次在中大会场分享完RCurl爬虫和Shiny包的相关演讲后,有很多同学对这部分的内容很敢兴趣,昨晚有个同学问我演讲中提到的爬团购网数据的例子,按照代码尝试自己去抓商家地址和销售数量时却出错了。今天中午抽空重写了上次演讲内容的代码,增加了商家地址这部分信息,并力求代码的精简。

原文章:利用RCurl包完成自己感兴趣的团购信息【批量】抓取

首先拿深圳拉手网第一页做研究:http://shenzhen.lashou.com/cate/meishi

url1='http://shenzhen.lashou.com/cate/meishi'
web=readLines(url1,encoding='UTF-8')

查看抓取下面网页的关键信息,截图如下:


接下来要用正则表达式去抓取商家地址、商家名称、商家描述、折扣价和原来价格等信息。(因有些未有销售数量的商家是没有number描述,故在次先不研究销售数量。

如下面截图的商家因销售数量为0,故网页源码没有number统计:


接下来,利用正则表达式抓取团购网各商家名称,代码如下:

goods_name<-web[grep("goods-name",web)]

[1] "                        <a class=\"goods-name\" href=\"http://shenzhen.lashou.com/deal/8095699.html\" target=\"_blank\" title=\"【国贸】蓬客精品酒店(西餐厅)\">【国贸】蓬客精品酒店(西餐厅)</a>"                                      
 [2] "                        <a class=\"goods-name\" href=\"http://shenzhen.lashou.com/deal/9417537.html\" target=\"_blank\" title=\"【科技园】大桥日本料理(科兴科学园店)\">【科技园】大桥日本料理(科兴科学园店)</a>"                      
 [3] "                        <a class=\"goods-name\" href=\"http://shenzhen.lashou.com/deal/7486383.html\" target=\"_blank\" title=\"【国贸】潮泰轩贵宾楼(彭年店)\">【国贸】潮泰轩贵宾楼(彭年店)</a>"                                      
 [4] "                        <a class=\"goods-name\" href=\"http://shenzhen.lashou.com/deal/8019130.html\" target=\"_blank\" title=\"【地王大厦/KKmall】摩登克斯酒店(无国界自助餐厅)\">【地王大厦/KKmall】摩登克斯酒店(无国界自助餐厅)</a>"
 [5] "                        <a class=\"goods-name\" href=\"http://shenzhen.lashou.com/deal/9499473.html\" target=\"_blank\" title=\"【3店通用】台中牛排馆\">【3店通用】台中牛排馆</a>"                                                        
 [6] "                        <a class=\"goods-name\" href=\"http://shenzhen.lashou.com/deal/8572379.html\" target=\"_blank\" title=\"【2店通用】顺德天\">【2店通用】顺德天</a>"                                                                
......................................................................................................................................................                                                 
[50] "                        <a class=\"goods-name\" href=\"http://shenzhen.lashou.com/deal/8748217.html\" target=\"_blank\" title=\"【市民中心】浅野台湾雪锅\">【市民中心】浅野台湾雪锅</a>"                                                  
[51] "                        <a class=\"goods-name\" href=\"http://shenzhen.lashou.com/deal/9610775.html\" target=\"_blank\" title=\"【沙头角】11区(壹海城店)\">【沙头角】11区(壹海城店)</a>"                                              
[52] "                        <a class=\"goods-name\" href=\"http://shenzhen.lashou.com/deal/9613013.html\" target=\"_blank\" title=\"【沙井】藕厨\">【沙井】藕厨</a>"                                                                          
[53] "                        <a class=\"goods-name\" href=\"http://shenzhen.lashou.com/deal/9630235.html\" target=\"_blank\" title=\"【黄贝岭】当归巧坊Return\">【黄贝岭】当归巧坊Return</a>"                                                  
[54] "                        <a class=\"goods-name\" href=\"http://shenzhen.lashou.com/deal/9630887.html\" target=\"_blank\" title=\"【3店通用】M63法式甜品\">【3店通用】M63法式甜品</a>"                                                      
[55] "                        <a class=\"goods-name\" href=\"http://shenzhen.lashou.com/deal/9553105.html\" target=\"_blank\" title=\"【国贸】藤原寿司\">【国贸】藤原寿司</a>"                    
                                        

每页有55个商家,接下来提取商家名,

goods_name<-substr(goods_name,regexpr("\">",goods_name)+2,nchar(goods_name)-4)  #goods_name

结果如下:

[1] "【国贸】蓬客精品酒店(西餐厅)"                   
 [2] "【科技园】大桥日本料理(科兴科学园店)"           
 [3] "【国贸】潮泰轩贵宾楼(彭年店)"                   
 [4] "【地王大厦/KKmall】摩登克斯酒店(无国界自助餐厅)"
 [5] "【3店通用】台中牛排馆"                            
 [6] "【2店通用】顺德天"                                
 [7] "【2店通用】粤膳和养生坊"                          
 [8] "【海岸城/保利】蓬客精品酒店(海岸城店)"          
 [9] "【华侨城】四海一家(南山中心区)"                 
[10] "【黄贝岭】黄记煌"                                 
[11] "【34店通用】尊宝比萨"                             
[12] "【海岸城/保利】仙芋世家"                          
[13] "【1080店通用】幸福西饼"                           
[14] "【宝安南路沿线】金钱豹"                           
[15] "【龙岗中心区】隐秀山居酒店西餐厅"                 
[16] "【民治】汉釜宫韩式自助烤肉(民治店)"             
[17] "【观澜】冠菌海鲜肥牛火锅"                         
[18] "【宝安南路沿线】炭烤肥牛"                         
[19] "【龙岗中心区】大桥日本料理(龙岗店)"             
[20] "【西丽】常之乐猪肚鸡"                             
[21] "【沙井】希尔顿花园酒店"                           
[22] "【梅林】国宝通客家海鲜酒楼(梅林店)"             
[23] "【6店通用】芒果捞"                                
[24] "【港隆城】冠菌海鲜肥牛自助火锅(流塘店)"         
[25] "【香蜜湖】好世界国宴店"                           
[26] "【龙岗中心区】粿然茶餐厅"                         
[27] "【2店通用】圣多斯巴西烤肉"                        
[28] "【南头】廖记棒棒鸡"                               
[29] "【4店通用】五谷芳乳鸽王"                          
[30] "【坪山】重庆冒菜(八分店)"                       
[31] "【南油】绝味鸭脖(登良路店)"                     
[32] "【横岗】大世喜茶餐厅"                             
[33] "【南头】廖记棒棒鸡"                               
[34] "【沙头角】11区(壹海城店)"                       
[35] "【2店通用】安琪蛋糕店"                            
[36] "【白石洲】冠菌海鲜肥牛自助火锅"                   
[37] "【2店通用】王品台塑牛排"                          
[38] "【观澜】冠菌海鲜肥牛火锅"                         
[39] "【国贸】领鲜环球自助餐"                           
[40] "【6店通用】大汉堡"                                
[41] "【5店通用】亚马逊巴西烤肉"                        
[42] "【华强北】水城黄焖鸡米饭"                         
[43] "【坪山】重庆冒菜(八分店)"                       
[44] "【华强北】花园格兰云天大酒店"                     
[45] "【9店通用】哈根达斯"                              
[46] "【福田CBD】贵哥卤肉卷"                            
[47] "【4店通用】好景面包坊"                            
[48] "【沙井】艺丰美食"                                 
[49] "【南头】廖记棒棒鸡"                               
[50] "【市民中心】浅野台湾雪锅"                         
[51] "【沙头角】11区(壹海城店)"                       
[52] "【沙井】藕厨"                                     
[53] "【黄贝岭】当归巧坊Return"                         
[54] "【3店通用】M63法式甜品"                           
[55] "【国贸】藤原寿司"           

提取关键信息的完整代码如下:


因为拉手深圳地区美食一共有150页,如何统计网页数量请查看之前的文章。

利用for循环将网页都先抓下放一起,再重复刚才的提取字段代码即可完成所有商家的抓取工作。

循环代码如下:


短短几行代码就可以完成团购网的数据抓取工作,是否so easy呢。

最后,附上完整代码:

url1='http://shenzhen.lashou.com/cate/meishi'
web=readLines(url1,encoding='UTF-8')
for(i in 2:150){
  web1<-NULL
  url<-paste(url,"/page",i,sep="")
  web1<-readLines(url,encoding='UTF-8')
  web<-c(web,web1)
}
# #### 提取关键字段信息 #### 
place<-web[grep("class=\"goods-place\"",web)]
place<-substr(place,regexpr("\">",place)+3,regexpr("</",place)-2)  #place
goods_name<-web[grep("goods-name",web)]
goods_name<-substr(goods_name,regexpr("\">",goods_name)+2,nchar(goods_name)-4)  #goods_name
goods_text<-web[grep("goods-text",web)]
goods_text<-substr(goods_text,regexpr("\">",goods_text)+2,nchar(goods_text)-4)  #goods_text
price<-web[grep("class=\"price\"",web)]
price<-substr(price,regexpr("</em>",price)+5,nchar(price)-7)  #price
org_price<-web[grep("class=\"money\"",web)]
org_price<-substr(org_price,regexpr("<del>",org_price)+5,nchar(org_price)-13)  #org_price
result<-data.frame(place=place,goods_name=goods_name,goods_text=goods_text,price=price,
                   org_price=org_price)


head(result)


搞定,收工!

http://www.lryc.cn/news/2412883.html

相关文章:

  • Matlab中句柄类和值类的比较
  • flash builder 4 编译器参数
  • [转]Windows Shell 编程 第十三章 【来源:http://blog.csdn.net/wangqiulin123456/article/details/7988004】...
  • Android4.4/CM11编译常见错误及解决方法!
  • steam服务器脱机怎么办/与Steam服务器通讯时发生错误解决方法
  • 代码的隐蔽威胁:泄露秘密和个人身份信息
  • 腾讯的web QQ接口
  • suse10 linux u盘安装,SUSE Linux Enterprise Server 11 SP3安装教程详解
  • Fedora 12 的两个问题的解决
  • 全志R128 SDK HAL 模块开发指南——Flash Controller
  • 51单片机温度检测及LCD1602显示
  • LGG7刷入第三方ROM,安卓11
  • 机器人三大定律的发展和演进概述
  • asp毕业设计——基于asp+access的网页设计辅导系统设计与实现(毕业论文+程序源码)——网页设计辅导系统
  • python输出指定目录下所有文件(全路径),并核对md5码
  • 手指检测心跳设计——传感器制作篇
  • QQ盗号软件后门分析与反击
  • SecureCRT的使用教程( 过程非常详细!!值得查看)
  • Ubuntu下载-最新版本Ubuntu Linux 7.10下载(转)
  • OLT操作命令集及排障
  • Joomla安装图文教程
  • 联想A820T 修改MAC
  • 背包问题九讲笔记_01背包
  • 谷歌地图离线数据包_除了谷歌地图,还有哪些导航软件可以选择,这6个地图值得一试...
  • JavaScript 深入学习教程
  • 破解教程 第二课 脱壳
  • 【Unity3D插件】“我敢说,这是你见过最多的插件合集”Unity插件分享不断更新中。。。
  • 5分钟替换天空 - Affinity Photo 教程
  • MSOCache文件夹能否删除?
  • 《新牧场物语》攻略(转自百度)