不同长度的rvest刮取数据

不同长度的rvest刮取数据,r,web-scraping,rvest,R,Web Scraping,Rvest,作为一个实践项目,我试图从一个网站上搜集房产数据。(我只打算练习我的网页抓取技能,不打算进一步利用抓取的数据)。但我发现有些属性没有价格,因此,当我试图将它们组合到一个数据帧中时,这会产生不同长度的错误。 以下是刮片的代码: library(tidyverse) library(revest) web_page <- read_html("https://wx.fang.anjuke.com/loupan/all/a1_p2/") community_name &l

作为一个实践项目,我试图从一个网站上搜集房产数据。(我只打算练习我的网页抓取技能,不打算进一步利用抓取的数据)。但我发现有些属性没有价格,因此,当我试图将它们组合到一个数据帧中时,这会产生不同长度的错误。 以下是刮片的代码:

library(tidyverse)
library(revest)

web_page <- read_html("https://wx.fang.anjuke.com/loupan/all/a1_p2/")

community_name <- web_page %>% 
  html_nodes(".items-name") %>% 
  html_text()

length(community_name)

listed_price <- web_page %>% 
  html_nodes(".price") %>% 
  html_text()

length(listed_price)
property_data <- data.frame(
  name=community_name,
  price=listed_price
)
库(tidyverse)
图书馆(revest)
网页%
html_text()
长度(社区名称)
标价%
html_节点(“.price”)%>%
html_text()
长度(标价)

property_data对网页的检查显示,当price有值时,类是
.price
,当price没有值时,类是
.price txt
。因此,一种解决方案是在
html\u nodes()
中使用XPath表达式,并匹配以“price”开头的类:

标价%
html_节点(xpath=“//p[以(@class,'price')]”开头]”%>%
html_text()
长度(标价)
[1] 60

这是否回答了您的问题?或者这个:非常感谢你的帮助,而且效果很好。我需要学习更多关于xpath的知识,你有关于xpath的好材料吗?谢谢neilfws!我使用CSS选择器多于使用XPath,但在这种情况下它很有用。除了谷歌搜索,我没有任何特别的建议:)也许吧
listed_price <- web_page %>% 
  html_nodes(xpath = "//p[starts-with(@class, 'price')]") %>% 
  html_text()

length(listed_price)
[1] 60