#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/scrape4. 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