Очистка HTML-кода — R scrapR

#r #web #screen-scraping #scraper

#r #веб #очистка экрана #скребок

Вопрос:

Я пытаюсь проанализировать данные, закодированные в формате HTML. Пример строки, которую я пытаюсь проанализировать,:

 Simplify the polynomial by combining like terms. <img src="/flx/math/inline/3x+12-11x+14" class="x-math" alt="3x 12-11x 14" />
 

Я хочу получить текст до <img и текст в alt=

Желаемый результат:

 Simplify the polynomial by combining like terms. 3x 12-11x 14  
 

Я попробовал scrapeR.

 y1 = scrape (str1)  # the above string is in str1 (as a vector)
 

Я получаю следующее сообщение об ошибке

 Error in which(value == defs) : 
  argument "code" is missing, with no default
 

Кто-нибудь играл со скребком. Я не уверен, что означает «код», поскольку это опция
, и она не описана в руководстве. Просто пытаюсь понять, какое значение по умолчанию влияет на это.

Комментарии:

1. согласно scrape документации, функция обычно принимает URL-адрес в качестве первого неназванного параметра. О чем y1 = scrape(object="str1") ?

2. он принимает str1. y1=scrape(str1) выдает ошибку. y1= scrape (object=str1) выдает ошибку другого типа — невозможно найти объект str1. Я думаю, что object= xxx предназначен для объектов с URL-адресами и т.д.

3. Этого y = scrape(object="str1") не должно быть y1 = scrape(object=str1) . Смотрите документацию по адресу: rdocumentation.org/packages/scrapeR/functions/scrape

4. y = scrape(object=»str1″) помещает всю HTML-оболочку в y. Теперь в нем есть <doctype, <HTML> <body> и т. Д. Теперь это полный HTML-файл. (Я ожидал противоположного результата. (Ценю вашу помощь).

5. @MrFlick, спасибо за редактирование моего оригинального сообщения и его правильное форматирование. (Я научусь это делать).

Ответ №1:

Вот один из способов извлечь эту информацию

 str1<-"Simplify the polynomial by combining like terms. <img src="/flx/math/inline/3x+12-11x+14" class="x-math" alt="3x 12-11x 14" />"

library(scrapeR)    
y<-scrape(object="str1")[[1]] #just get the first result

pretext <- sapply(xpathSApply(y, "//img/preceding::text()"), xmlValue)
alttext <- xpathSApply(y, "//img/@alt")

paste(pretext, alttext)
#[1] "Simplify the polynomial by combining like terms.  3x 12-11x 14"
 

scrape() Вернет документ, подобный HTML / XML, с которым вы можете работать, используя такие функции, как xpathSApply поиск узлов и извлечение значений.

Комментарии:

1. Большое вам спасибо. Это работает. Теперь я собираюсь выяснить, почему это работает! (спасибо, что указали мне правильное направление)

2. нашел хороший учебник по веб-скрапингу с использованием R. просто разместите его для дальнейшего использования. files.meetup.com/1503964/2010-06-24_WebScrapeIntro.pdf