5

rvest を使用して Web サイトから HTML テーブルをスクレイピングしようとしています。<tr>唯一の問題は、最初の行を除いて、スクレイピングしようとしているテーブルにタグがないことです。次のようになります。

<tr> 
  <td>6/21/2015 9:38 PM</td>
  <td>5311 Lake Park</td>
  <td>UCPD</td>
  <td>African American</td>
  <td>Male</td>
  <td>Subject was causing a disturbance in the area.</td>
  <td>Name checked; no further action</td>
  <td>No</td>
</tr>

  <td>6/21/2015 10:37 PM</td>
  <td>5200 S Blackstone</td>
  <td>UCPD</td>
  <td>African American</td>
  <td>Male</td>
  <td>Subject was observed fighting in the McDonald's parking lot</td>
  <td>Warned; released</td>
  <td>No</td>
</tr>

等々。したがって、次のコードを使用すると、データ フレームの最初の行しか取得できません。

library(rvest)
mydata <- html_session("https://incidentreports.uchicago.edu/incidentReportArchive.php?startDate=06/01/2015&endDate=06/21/2015") %>%
    html_node("table") %>%
    html_table(header = TRUE, fill=TRUE)

<tr>これを変更して、開始タグがなくても行が行であることを html_table に理解させるにはどうすればよいですか? または、これについてもっと良い方法はありますか?

4

3 に答える 3

1

みんな、ありがとう!次の解決策を提案したオフラインの別のRユーザーから助けを得ることができました。html を取得して保存し、<tr>(@Bram Vanroy が提案したように) を追加し、それを html オブジェクトに戻してから、データフレームにスクレイピングできます。

library(rvest)
myurl <- "https://incidentreports.uchicago.edu/incidentReportArchive.php?startDate=06/01/2015&endDate=06/21/2015"
download.file(myurl, destfile="myfile.html", method="curl")
myhtml <- readChar("myfile.html", file.info("myfile.html")$size)
myhtml <- gsub("</tr>", "</tr><tr>", myhtml, fixed = TRUE)
mydata <- html(myhtml)

mydf <- mydata %>%
  html_node("table") %>%
  html_table(fill = TRUE)

mydf <- na.omit(mydf)

最後の行は、このメソッドで表示されるいくつかの奇妙な NA 行を省略しています。

于 2015-06-23T21:19:11.913 に答える