Сохранить содержимое сайта в текстовые файлы - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь написать код R, в который я ввожу URL и выводю (сохраняю на жесткий диск) файл .txt. Я создал большой список URL, используя пакет "edgarWebR". Примером может быть "https://www.sec.gov/Archives/edgar/data/1131013/000119312518074650/d442610dncsr.htm". В основном

  1. открыть ссылку
  2. Копировать все (CTRL + A, CTRL + C)
  3. открыть текстовый файл empy и вставить содержимое (CTRL + V)
  4. сохранить .txt файл под указанным именем

(в зацикленном режиме, конечно). Я склонен «жестко кодировать это» (как на открытом веб-сайте в браузере с использованием команд browseURL (...) и «отправить ключи»). Но я боюсь, что это не будет работать очень гладко. Однако другие команды (такие как readLines ()), похоже, копируют структуру HTML (поэтому возвращают не только текст).

В конце я заинтересован в коротком абзаце каждого из этих писем акционера (содержащем только текст; поэтому таблицы / графики не имеют значения в моей конкретной конфигурации.)

Кто-нибудь знает о функции R, которая поможет `?

спасибо заранее!

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Спасибо всем за ваш вклад. Оказывается, что любое преобразование html занимало слишком много времени, учитывая количество сайтов, которые мне нужно проанализировать. (Рабочее) решение, вероятно, нарушает некоторые рекомендации по передовому опыту, но оно выполняет свою работу.

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox(executable_path=path + '/codes_ml/geckodriver/geckodriver.exe') # initialize driver
# it is fine to open the driver just once

# loop over urls will the text
driver.get(report_url)
element = driver.find_element_by_css_selector("body")
element.send_keys(Keys.CONTROL+'a')
element.send_keys(Keys.CONTROL+'c')
text = clipboard.paste()
0 голосов
/ 03 мая 2018

Дайте мне знать, если код ниже работает для вас. xpathSApply может также применяться для различных компонентов HTML. Поскольку в вашем случае требуются только параграфы.

library(RCurl)
library(XML)

# Create character vector of urls
urls <- c("url1", "url2", "url3")

for ( url in urls) {
    # download html
    html <- getURL(url, followlocation = TRUE)

    # parse html
    doc = htmlParse(html, asText=TRUE)
    plain.text <- xpathSApply(doc, "//p", xmlValue)

    # writing lines to html
    # depends whether you need separate files for each url or same
    fileConn<-file(paste(url, "txt", sep="."))
    writeLines(paste(plain.text, collapse = "\n"), fileConn)
    close(fileConn)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...