gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 01:44:20 25 4
gpt4 key购买 nike

作为经济研究团队的实习生,我的任务是使用 R 找到一种自动收集房地产广告网站上特定数据的方法。

我假设相关包是XMLRCurl,但我对它们的工作了解非常有限。

这是网站的主页: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”)、表面(“surface”)、“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, "//span[contains(@class, 'ad')]/strong", xmlValue)
values2 = xpathSApply(doc, "//span[contains(@class, '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 € 59000 Lille Oui Maison 8 250 m2 F (de 331 à 450) <NA>
469 000 € 59000 Lille Oui Maison 8 250 m2 F (de 331 à 450) <NA>
140 000 € 59000 Lille <NA> Appartement 2 50 m2 D (de 151 à 230) E (de 36 à 55)
140 000 € 59000 Lille <NA> Appartement 2 50 m2 D (de 151 à 230) E (de 36 à 55)
170 000 € 59000 Lille <NA> Appartement <NA> 50 m2 D (de 151 à 230) D (de 21 à 35)

您可以轻松地使用 apply 函数系列遍历多个页面以获取所有广告的详细信息。有两件事要注意。一是从网站上抓取的合法性。二是在循环函数中使用 Sys.sleep,这样服务器就不会被请求轰炸。

告诉我这是怎么回事

关于xml - 使用 R 对房地产广告进行网络抓取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5990525/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com