将网站内容保存到txt文件中

时间:2018-05-03 10:16:45

标签: r web-crawler

我正在尝试编写R代码,我输入一个URL并输出(保存在硬盘上)一个.txt文件。我使用" edgarWebR"创建了一个大的url列表。包。一个例子是" https://www.sec.gov/Archives/edgar/data/1131013/000119312518074650/d442610dncsr.htm"。基本上

  1. 打开链接
  2. 复制所有内容(CTRL + A,CTRL + C)
  3. 打开empy文本文件并粘贴内容(CTRL + V)
  4. 以指定名称保存.txt文件
  5. (当然是以循环的方式)。我倾向于"硬编码" (如在使用browseURL(...)和"发送键"命令)的浏览器中打开网站。但我担心它不能顺利运行。但是其他命令(例如readLines())似乎复制HTML结构(因此不仅返回文本)。

    最后,我感兴趣的是每个股东信件的一个短段(仅包含文本;因此,表格/图表在我的特定设置中无关紧要。)

    任何人都知道R功能会有帮助吗?

    提前感谢!

2 个答案:

答案 0 :(得分:1)

让我知道以下代码适合您。 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)
}

答案 1 :(得分:0)

感谢大家的意见。事实证明,鉴于我需要解析的大量网站,任何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()