【发布时间】:2017-11-30 11:46:24
【问题描述】:
我有一个从带有议程的网站下载的描述列表,我正在尝试创建一个 data.frame,但没有成功。 描述列表的结构如下:
<dl>
<dt> (which contains a <p = "day"> for day)
<dd> (which contains a <p = "hour"> for hour and a <p = "event"> for the event)
我设法用以下代码提取了这些数据:
library(rvest)
url <- read_html("www.mypage.com")
day <- data.frame(day = html_text(html_nodes(url, '.day')))
hour <- data.frame(hour = html_text(html_nodes(url, '.hour')))
event <- data.frame(event = html_text(html_nodes(url, '.event')))
day$ID <- seq.int(nrow(day))
hour$ID <- seq.int(nrow(hour))
event$ID <- seq.int(nrow(event))
然后我通过按 ID 连接它们创建了一个数据框。
问题是当我有这个时:
<dl>
<dt>
<dd>
<dd>
<dd>
每天不止一个事件。
考虑到同一个<dt> 可能有多个<dd>,我该如何创建我的data.frame?谢谢!
【问题讨论】:
-
不共享 URL(通常)是为了避免显示您正在执行非法/不道德的活动,或者它是一个内部页面。后者可以理解,前者则不然。您没有提供 HTML 的可重现 sn-p(在没有内容的情况下重复
<dd>s 没有帮助),并且可能有其他节点类或 ID 可以提供帮助。因此,请至少确定目标 URL 的性质(我们中的一些人不会帮助内容窃贼)并包含更好的示例数据或提供 URL。 -
哦,对不起...我正在为葡萄牙共和国总统的议程做数据。议程在这里:presidencia.pt/?idc=11&fano=2016
标签: r web-scraping rvest