Используйте R для извлечения разделов HTML-документа, используя <b>для указания заголовка раздела - PullRequest
0 голосов
/ 22 октября 2019

У меня есть несколько тысяч больших документов, сохраненных локально, где они все сохранены как файлы HTML. Каждый документ имеет длину около 300 страниц и имеет несколько разделов, в которых заголовки выделены жирным шрифтом. Моя цель - выполнить текстовый поиск в этих файлах, и, когда я найду данную фразу, извлеките весь раздел, содержащий эту фразу. Моя идея состояла в том, чтобы разобрать HTML-текст так, чтобы он стал списком абзацев, найти расположение фразы, а затем извлечь все из жирных букв (заголовок этого раздела) непосредственно перед жирными буквами сразу после (заголовок следующегораздел).

Я пытался разными способами, но ни один из них не делает то, что я хочу. многообещающе было следующее:

  myhtmlfile = "I:/myfolder/myfile.html"
  myhtmltxt2 = htmlTreeParse(myhtmlfile, useInternal = TRUE)

Но хотя я могу отображать объект "myhtmltxt2", и он выглядит как HTML с тегами (это то, что мне нужно, чтобы я мог искать "<b>"), этовнешний указатель. Поэтому я не могу выполнить команду ниже, потому что grep не работает с указателями.

test2<-grep("myphrase",myhtmltxt2,ignore.case = T)  

Кроме того, я сделал это:

doc.text = unlist(xpathApply(myhtmltxt2, '//p', xmlValue))
test3<-grep("myphrase",doc.text,ignore.case = T)

Но в этом случае я потерял html-теги в doc.text, поэтому у меня больше нет "<b>", то есть то, что ясобирался использовать, чтобы указать раздел для извлечения. Есть ли способ сделать это?

1 Ответ

0 голосов
/ 23 октября 2019

Мне удалось это следующим образом:

singleString <- paste(readLines(myHTMLfile), collapse=" ")
data11 = strsplit(singleString,"<p><b>", fixed = TRUE)
test2<- unlist(data11)

myindex<-regexpr("Myphrase </b>", test2)
...