【自学笔记】关于R语言的静态网页爬虫

1、网站情况及爬虫目标

   网站为:https://fz.fang.anjuke.com/loupan/all/;需要得到的是该页面的所有楼盘信息;观察可知,第一页的网址为前面的网址加上p1/,即https://fz.fang.anjuke.com/loupan/all/p1/,同理,第i页为原有网址加上pi/。同样采用循环语句得到共10页的楼盘信息。

2、Xpath

要得到相应的信息需要知道每个信息保存在html中的哪个节点,可以采用谷歌浏览器打开,右击”检查“可得到网页代码情况:

可知,”中海华侨城“这段文字信息位于属性为infos的第一个div节点下的第一个a节点,观察其他的楼盘名字的信息,均位于属性为infos的div节点下的第一个a节点,因此相应的路径则为“//div[@class='infos']/a[1]” ,其中@符号表示符合属性为class的所有div节点。同理分别可根据xpath得到其余地址和房价等信息。

3、爬虫代码

library(xml2)
library(XML)
library(RCurl)
library(rvest)
loupan_inf<-data.frame()
for(i in 1:10)
{
  #解析网址
  web<-read_html(str_c("https://fz.fang.anjuke.com/loupan/all/p1",i,"/"))
  #获得节点并提取其中的文字部分
  lp_name<-web%>%html_nodes(xpath = "//div[@class='infos']/a[1]")%>%html_text()
  #去除多余的字符
  lp_name<-str_remove_all(lp_name,"[\n\t]")
  #获得节点并提取其中的文字部分
  lp_adress<-web%>%html_nodes(xpath = "//div[@class='infos']/a[2]")%>%html_text()
  #去除多余的字符
  lp_adress<-str_remove_all(lp_adress,"[ \n\t]")
  #获得节点并提取其中的文字部分
  lp_huxing<-web%>%html_nodes(xpath = "//div[@class='infos']/a[3]")%>%html_text()
  #去除多余的字符
  lp_huxing<-str_remove_all(lp_huxing,"[ \n\t]")
  #获得节点并提取其中的文字部分
  lp_favor<-web%>%html_nodes(xpath = "//a[@class='favor-pos']")%>%html_text()
  #去除多余的字符
  lp_favor<-str_remove_all(lp_favor,"[ \n\t]")
  #放在一个数据框里
  loupan<-data.frame(lp_name,lp_adress,lp_huxing,lp_favor)
  loupan_inf<-rbind(loupan_inf,loupan)
}
#输出
setwd("F:/s/R语言/爬虫练习")
write.csv(loupan_inf,file ="福州市楼盘.csv")

4、结果

最后得到的结果中,原先在R语言里输出正常的地址,到csv中变成了乱码,这个问题有待后续解决~对于以后一些复杂的数据处理需要再详细了解下正则表达式。

R中的显示结果:

输出csv后得到的结果:

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值