我目前正在使用RVest在R中进行网络抓取。我现在的网站是"https://www.immobilienscout24.de/Suche/S-2/Wohnung-Miete/Rheinland-Pfalz/Koblenz“。但我没办法抢到地产报价的个人pushlishDates。
这是我在脚本中找到的HTML部分。
"@publishDate":"2019-10-12T10:50:57.831+02:00“
我找不到合适的RVest-Selector.下面的代码返回字符,因为节点"publishDate“不工作。
刮每个单独的html_node()所需的html_node()是什么?提前谢谢。
library(rvest)
immo_webp <- read_html ("https://www.immobilienscout24.de/Suche/S-2/Wohnung-Miete/Rheinland-Pfalz/Koblenz")
PDate <- immo_webp %>%
html_nodes("publishDate") %>%
html_text()
发布于 2019-10-12 11:38:06
内容是从script
标记动态加载的。您可以正则化出适当的字符串并使用jsonlite
进行解析,然后提取到感兴趣的数据项中,例如使用purrr
R:
library(rvest)
library(stringr)
library(jsonlite)
library(purrr)
p <- read_html('https://www.immobilienscout24.de/Suche/S-2/Wohnung-Miete/Rheinland-Pfalz/Koblenz') %>% html_text()
data <- jsonlite::parse_json(str_match_all(p,'resultListModel: (.*\\})')[[1]][,2])
results <- data$searchResponseModel$resultlist.resultlist$resultlistEntries[[1]]$resultlistEntry
df <- map_df(results, function(item) {
data.frame(property = item$resultlist.realEstate$address$description$text,
datePublished = item$`@publishDate`,
stringsAsFactors=FALSE)
})
View(df)
Py:
from bs4 import BeautifulSoup as bs
import requests, re, json
import pandas as pd
r = requests.get('https://www.immobilienscout24.de/Suche/S-2/Wohnung-Miete/Rheinland-Pfalz/Koblenz')
p = re.compile(r'resultListModel: (.*})')
data = json.loads(p.findall(r.text)[0])
info = [
(entry['resultlist.realEstate']['address']['description']['text']
,entry['@publishDate'])
for entry in data['searchResponseModel']['resultlist.resultlist']['resultlistEntries'][0]['resultlistEntry']
]
print(pd.DataFrame(info,columns = ['Property','PublishedDate']))
https://stackoverflow.com/questions/58352560
复制相似问题