如何从 HTML 文档中进行文本挖掘,并将其转换为 CSV 文件?
How to do Text Mining from a HTML document, and convert it into a CSV file?
所以我正在尝试从这个网站“https://www.bmkg.go.id/gempabumi/gempabumi-terkini.bmkg”进行一些文本挖掘 - 特别是通过开发者资源从第 452 行到第 1050 行。我没能成功地做到这一点;我的目标是,在成功完成后,我必须将其转换为带有自定义标签的数据框,然后将其作为 CSV 文件保存到我的本地驱动器中。
我实现这个目标的逻辑是正确的,还是我一开始就搞错了?
这是我目前的情况:
library(httr)
library(dplyr)
bmkg_current <- GET("https://www.bmkg.go.id/gempabumi/gempabumi-terkini.bmkg")
stringi::stri_enc_detect(content(bmkg_current, "raw")) //just to check encoding type
bmkg_text <- content(bmkg_current, type ="text", encoding = "ISO-8859-1")
bmkg_df <- tibble(line = 452:1050, text = bmkg_text)
bmkg_df //tried to output, but not want I wanted
输出:
# A tibble: 599 x 2
line text
<int> <chr>
1 452 "<!DOCTYPE html>\r\n<!--[if IE 8]> <html lang=\"en\" clas~
2 453 "<!DOCTYPE html>\r\n<!--[if IE 8]> <html lang=\"en\" clas~
3 454 "<!DOCTYPE html>\r\n<!--[if IE 8]> <html lang=\"en\" clas~
4 455 "<!DOCTYPE html>\r\n<!--[if IE 8]> <html lang=\"en\" clas~
5 456 "<!DOCTYPE html>\r\n<!--[if IE 8]> <html lang=\"en\" clas~
这些是 HTML 中第 452 - 1050 行的样子,来自 Developer Source:
<tr>
<td>2</td>
<td>29-Mar-20 <br>06:10:35 WIB</td>
<td>-7.39</td>
<td>124.19</td>
<td>5.2</td>
<td>631 Km</td>
<td>108 km BaratLaut ALOR-NTT</td>
</tr>
如有任何帮助,我们将不胜感激!谢谢:)
如果您需要使用 rvest
的网站 table 中的信息,您可以这样做:
library(rvest)
url <- 'https://www.bmkg.go.id/gempabumi/gempabumi-terkini.bmkg'
out_df <- url %>% read_html() %>% html_table() %>% .[[1]]
head(out_df)
# # Waktu Gempa Lintang Bujur Magnitudo Kedalaman Wilayah
#1 1 02-Apr-20 09:13:13 WIB -7.93 125.62 5.5 10 Km 125 km TimurLaut ALOR-NTT
#2 2 29-Mar-20 06:10:35 WIB -7.39 124.19 5.2 631 Km 108 km BaratLaut ALOR-NTT
#3 3 28-Mar-20 22:43:17 WIB -1.72 120.14 5.8 10 Km 46 km Tenggara SIGI-SULTENG
#4 4 27-Mar-20 21:32:48 WIB 0.28 133.53 5.5 10 Km 139 km BaratLaut MANOKWARI-PAPUABRT
#5 5 27-Mar-20 04:36:40 WIB -2.72 139.26 5.9 11 Km 72 km BaratLaut KAB-JAYAPURA-PAPUA
#6 6 26-Mar-20 22:38:03 WIB 5.58 125.16 6.3 10 Km 221 km BaratLaut TAHUNA-KEP.SANGIHE-SULUT
您可以使用 write.csv
将此数据写入 csv
write.csv(out_df, 'earthquake_data.csc', row.names = FALSE)
所以我正在尝试从这个网站“https://www.bmkg.go.id/gempabumi/gempabumi-terkini.bmkg”进行一些文本挖掘 - 特别是通过开发者资源从第 452 行到第 1050 行。我没能成功地做到这一点;我的目标是,在成功完成后,我必须将其转换为带有自定义标签的数据框,然后将其作为 CSV 文件保存到我的本地驱动器中。
我实现这个目标的逻辑是正确的,还是我一开始就搞错了?
这是我目前的情况:
library(httr)
library(dplyr)
bmkg_current <- GET("https://www.bmkg.go.id/gempabumi/gempabumi-terkini.bmkg")
stringi::stri_enc_detect(content(bmkg_current, "raw")) //just to check encoding type
bmkg_text <- content(bmkg_current, type ="text", encoding = "ISO-8859-1")
bmkg_df <- tibble(line = 452:1050, text = bmkg_text)
bmkg_df //tried to output, but not want I wanted
输出:
# A tibble: 599 x 2
line text
<int> <chr>
1 452 "<!DOCTYPE html>\r\n<!--[if IE 8]> <html lang=\"en\" clas~
2 453 "<!DOCTYPE html>\r\n<!--[if IE 8]> <html lang=\"en\" clas~
3 454 "<!DOCTYPE html>\r\n<!--[if IE 8]> <html lang=\"en\" clas~
4 455 "<!DOCTYPE html>\r\n<!--[if IE 8]> <html lang=\"en\" clas~
5 456 "<!DOCTYPE html>\r\n<!--[if IE 8]> <html lang=\"en\" clas~
这些是 HTML 中第 452 - 1050 行的样子,来自 Developer Source:
<tr>
<td>2</td>
<td>29-Mar-20 <br>06:10:35 WIB</td>
<td>-7.39</td>
<td>124.19</td>
<td>5.2</td>
<td>631 Km</td>
<td>108 km BaratLaut ALOR-NTT</td>
</tr>
如有任何帮助,我们将不胜感激!谢谢:)
如果您需要使用 rvest
的网站 table 中的信息,您可以这样做:
library(rvest)
url <- 'https://www.bmkg.go.id/gempabumi/gempabumi-terkini.bmkg'
out_df <- url %>% read_html() %>% html_table() %>% .[[1]]
head(out_df)
# # Waktu Gempa Lintang Bujur Magnitudo Kedalaman Wilayah
#1 1 02-Apr-20 09:13:13 WIB -7.93 125.62 5.5 10 Km 125 km TimurLaut ALOR-NTT
#2 2 29-Mar-20 06:10:35 WIB -7.39 124.19 5.2 631 Km 108 km BaratLaut ALOR-NTT
#3 3 28-Mar-20 22:43:17 WIB -1.72 120.14 5.8 10 Km 46 km Tenggara SIGI-SULTENG
#4 4 27-Mar-20 21:32:48 WIB 0.28 133.53 5.5 10 Km 139 km BaratLaut MANOKWARI-PAPUABRT
#5 5 27-Mar-20 04:36:40 WIB -2.72 139.26 5.9 11 Km 72 km BaratLaut KAB-JAYAPURA-PAPUA
#6 6 26-Mar-20 22:38:03 WIB 5.58 125.16 6.3 10 Km 221 km BaratLaut TAHUNA-KEP.SANGIHE-SULUT
您可以使用 write.csv
将此数据写入 csv
write.csv(out_df, 'earthquake_data.csc', row.names = FALSE)