加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xml – 使用R对房地产广告进行网络抓取

发布时间:2020-12-16 07:50:48 所属栏目:百科 来源:网络整理
导读:作为一名经济研究团队的实习生,我的任务是找到一种方法来自动收集房地产广告网站上的特定数据,使用R. 我假设有关的包是XML和RCurl,但我对他们工作的理解非常有限. 这是该网站的主页:http://www.leboncoin.fr/ventes_immobilieres/offres/nord_pas_de_calais
作为一名经济研究团队的实习生,我的任务是找到一种方法来自动收集房地产广告网站上的特定数据,使用R.

我假设有关的包是XML和RCurl,但我对他们工作的理解非常有限.

这是该网站的主页:http://www.leboncoin.fr/ventes_immobilieres/offres/nord_pas_de_calais/?f=a&th=1&zz=59000
理想情况下,我想构建我的数据库,以便每行对应一个广告.

以下是广告的详细信息:http://www.leboncoin.fr/ventes_immobilieres/197284216.htm?ca=17_s
我的变量是:价格(“Prix”),城市(“Ville”),表面(“表面”),“GES,”Classeénergie“以及房间数量(”Pièces“)以及作为广告中显示的图片数量.我还希望将文本导出为字符向量,稍后我将对其进行文本挖掘分析.

我正在寻找任何帮助,链接到教程或操作方法,这将使我领先一条路.

您可以使用R中的XML包来抓取这些数据.这是一段应该有用的代码.
# DEFINE UTILITY FUNCTIONS

# Function to Get Links to Ads by Page
get_ad_links = function(page){
  require(XML)
  # construct url to page
  url_base = "http://www.leboncoin.fr/ventes_immobilieres/offres/nord_pas_de_calais/"
  url      = paste(url_base,"?o=",page,"&zz=",59000,sep = "")
  page     = htmlTreeParse(url,useInternalNodes = T)

  # extract links to ads on page
  xp_exp   = "//td/a[contains(@href,'ventes_immobilieres')]"
  ad_links = xpathSApply(page,xp_exp,xmlGetAttr,"href")
  return(ad_links)  
}

# Function to Get Ad Details by Ad URL
get_ad_details = function(ad_url){
   require(XML)
   # parse ad url to html tree
   doc = htmlTreeParse(ad_url,useInternalNodes = T)

   # extract labels and values using xpath expression
   labels  = xpathSApply(doc,"//span[contains(@class,'ad')]/label",xmlValue)
   values1 = xpathSApply(doc,'ad')]/strong",xmlValue)
   values2 = xpathSApply(doc,'ad')]//a",xmlValue)
   values  = c(values1,values2)

   # convert to data frame and add labels
   mydf        = as.data.frame(t(values))
   names(mydf) = labels
   return(mydf)
}

以下是如何使用这些函数将信息提取到数据框中.

# grab ad links from page 1
ad_links = get_ad_links(page = 1)

# grab ad details for first 5 links from page 1
require(plyr)
ad_details = ldply(ad_links[1:5],get_ad_details,.progress = 'text')

这将返回以下输出

Prix :     Ville :  Frais d'agence inclus :  Type de bien :  Pièces :  Surface :  Classe énergie :          GES : 
469 000                        

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读