使用 rvest 进行网页抓取时出现 R 内存问题

2023-12-08

我在用rvest在 R 中进行网页抓取,我遇到了内存问题。我有一个 28,625 x 2 的字符串数据框,称为urls其中包含我正在抓取的页面的链接。框架的一行包含两个相关链接。我想生成一个 28,625 x 4 数据框Final以及从链接中抓取的信息。一条信息来自连续的第二个链接,另外三条信息来自第一个链接。这三条信息的 xpath 以字符串形式存储在向量中xpaths。我使用以下代码执行此操作:

data <- rep("", 4 * 28625)

k <- 1

for (i in 1:28625) {

  name <- html(urls[i, 2]) %>%
    html_node(xpath = '//*[@id="seriesDiv"]/table') %>%
    html_table(fill = T)

  data[k] <- name[4, 3]

  data[k + 1:3] <- html(urls[i, 1]) %>% 
    html_nodes(xpath = xpaths) %>%
    html_text()

  k <- k + 4

}

dim(data) <- c(4, 28625)
Final <- as.data.frame(t(data))

它工作得很好,但是当我打开任务管理器时,我发现我的内存使用量一直在单调增加,并且在大约 340 次迭代后目前为 97%。我想启动该程序并在一两天后返回,但在工作完成之前我的所有 RAM 将耗尽。我对 R 如何分配内存做了一些研究,并尽力预分配内存并就地修改,以防止代码进行不必要的复制等。

为什么这个内存如此密集?我可以做些什么来解决这个问题吗?


Rvest 已更新以解决此问题。看这里:

http://www.r-bloggers.com/rvest-0-3-0/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 rvest 进行网页抓取时出现 R 内存问题 的相关文章

  • 将 VLMC 拟合到很长的序列

    我正在尝试将 VLMC 拟合到最长序列为 296 个状态的数据集 我这样做如下所示 Load libraries library PST library RCurl library TraMineR Load and transform d
  • 如何更改 Shiny 中 navbarPage 折叠的断点

    我想用shiny navbarPage collapsible TRUE 当在小屏幕上查看我的 Shiny 应用程序时 将导航元素折叠到菜单中 默认情况下 当浏览器宽度小于 940 像素时会触发折叠 有什么方法可以改变这一点 以便在稍大的浏
  • 将函数应用于 3d 数组的每一层,返回一个数组

    假设您有一个包含行 列和层的 3 维数组 A lt array 1 27 c 3 3 3 想象你有一个函数 它接受一个矩阵作为输入并返回一个矩阵作为输出 就像t 如何将该函数应用于数组的每一层 返回与第一层大小相同的另一个数组 我觉得我应该
  • 为什么这些数字不相等?

    下面的代码显然是错误的 有什么问题 i lt 0 1 i lt i 0 05 i 1 0 15 if i 0 15 cat i equals 0 15 else cat i does not equal 0 15 i does not eq
  • R 中的字符串作为函数参数

    数据框chocolates列出了糖果的类型以及每种糖果的一组评级 ID sweetness filling crash snickers 0 67 0 55 0 40 milky way 0 81 0 53 0 56 我正在编写一个函数 它
  • 有没有一种简单的方法来判断存储在一个列表中的许多数据帧是否包含相同的列?

    我有一个包含许多数据框的列表 df1 lt data frame A 1 5 B 2 6 C LETTERS 1 5 df2 lt data frame A 1 5 B 2 6 C LETTERS 1 5 df3 lt data frame
  • 如何计算嵌套函数中的粘合表达式?

    我正在尝试嵌套一个函数 该函数将两个字符串粘合在一起 该函数使用组合字符串来命名数据帧的列 然而 问题似乎是粘合表达式没有足够早地评估为字符串 我可以 并且应该 强制在将表达式作为参数传递给另一个函数之前对其进行求值吗 library ti
  • R:将 JSON 时间格式转换为 POSIX

    我有一个 JSON 字符串 并将其放入数据框中 我能够做到这一点 但我在使用 apply 函数之一将所有时间字符串转换为 POSIX 格式时遇到问题 See here https stackoverflow com questions 90
  • ggplot散点图中的图例问题

    我想使用 ggplot 创建显示方法比较数据的散点图 绘图应包含原始数据 理想线和带误差的拟合线 图例应显示理想线和拟合线的线型 线宽 线颜色 我可以获得大部分我想要的东西 但是图例存在以下问题 图例显示每种线型有 2 条线 为什么 如何解
  • .NET 内存不足故障排除

    在阅读了几篇有关 NET 技术中的内存的启发性文章后 Out of Memory 不是指物理内存 https learn microsoft com en us archive blogs ericlippert out of memory
  • 替换字符串/文本中“从第 n 次到最后一次”出现的单词

    这个问题以前曾被问过 但尚未得到令提问者满意的答案 https stackoverflow com questions 36368712 how to use stringrs replace all function to replace
  • 如何根据两个数据框中最近的日期进行匹配?

    假设我有两个数据框 例如 set seed 123 df1 lt data frame bmi rnorm 20 25 5 date1 sample seq Date as Date 2014 01 01 as Date 2014 02 2
  • R - tidyr - 变异并传播多列

    我在 R 中有以下数据框 my df test lt data frame V1 c 1 2 1 V2 c A B A V3 c S1 S1 S2 V4 c x x x V5 c y y y V6 c A B C V7 c D E F my
  • 如何匹配R中列之间的多个对应值

    我有一个结构如下的数据框 ID Value1 Value2 1 a d g f 12 14 15 9 2 b c e 5 18 20 3 h i j 6 7 25 所以我有一个 ID 和两个值 对于值 1 有多个对应于值 2 的选项 我想最
  • for 循环中的 pandas isin 函数

    1 csv cut price depth carat table 0 Good 327 57 9 0 23 65 0 1 Good 335 63 3 0 31 58 0 2 Very Good 336 62 8 0 24 57 0 3 V
  • r 谷歌搜索结果计数检索[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 用关键字 健康医院 搜索谷歌会返回大约 1 150 000 000 个结果 如何在 R 中以编程方式获得此计数 我见过这个lin ht
  • R - Quantstart:多种股票的测试策略

    我正在使用一些指标构建基本交易策略 我的问题是我希望它在多个股票上运行 而不必指定我想要测试的每个单独的股票 目前我可以使用向量一次获取多个符号 如下所示 Get Shares from Yahoo Finance Stocks lt AS
  • Python,将迭代函数变成递归函数

    我创建了一个输出 4 3 2 1 0 1 2 3 4 的迭代函数 def bounce2 n s n for i in range n print n n n 1 if n lt 0 for i in range s 1 print n n
  • 杂乱的扭曲连接在不干净的时尚中消失了。没有代理。已经尝试过标题

    我正在尝试抓取这个网站 https www5 apply2jobs com jupitermed ProfExt index cfm fuseaction mExternal searchJobs https www5 apply2jobs
  • 如何正确处置注入的DLL线程?

    我将一个 DLL 注入到目标进程中 以在玩 MMORPG 时充当助手 当前功能将按键转换为鼠标点击 因为 MMORPG 要求用户移动鼠标才能实现某些功能 这是我所鄙视的 假设我出于某种原因想要取消注入 DLL 我该怎么做呢 这个方法干净吗

随机推荐

  • 在 XML 中引用自定义视图不能以两种记录的方式工作吗?

  • 在 mongodb 中使用“group by”选择 Max()

    请帮我将这个选择语句转换为mongodb Select Name Max Value From table1 Group By Name 我读过这个文档 http www mongodb org display DOCS Aggregati
  • android 评级栏 xml 和 numStars

    我是 XML 设计的初学者 D 这是我的评级栏和朋友的 XML
  • 为什么 ArrayList<>.add() 不起作用?

    我是 Java 新手 目前正在使用 Android Studio 我只是不明白为什么 add 不起作用 主题和作业只是自定义课程 问题是弹出消息 无法解析符号 添加 整个过程失败 我已经导入了 java util ArrayList Arr
  • 如何在 Angular 中正确实现 ngOnDestroy() ?

    我有一个带有计时器的子组件 每 2 秒我向服务器发送 api 调用 只要用户在页面上 即使他 她要去参加婚礼并保持页面 父组件窗口 打开 我就需要执行此调用 这是我的组件中的一些代码 this myTimer Observable time
  • M2 上的轨道:dyld[...]:缺少名为的符号

    我将 Rails 项目从 5 升级到 6 现在 Rails 命令在我的 M2 mac 上抛出此错误 dyld missing symbol called 它看起来像是 Node 和 mysql gem 的某种问题 当我使用 SQLite 创
  • 在堆栈项目中添加 MaybeT 依赖项时遇到错误

    我正在关注这个教程网络爬虫使用HXT 我这里使用的是堆栈 在为 MaybeT 添加依赖项时 它要求 建议的操作 尝试将以下内容添加到 Users Haskell Development Scraper stack yaml 中的额外 dep
  • 如何使用 SOAP V2 为 Magento 设置自定义 api?

    我使用的是 Magento 1 4 1 1 我正在尝试使用 SOAP v2 在 API 中设置自定义函数 我让它适用于 SOAP v1 但我需要 v2 以便 C 可以使用它 对于 v2 该函数显示在 WSDL 中 但总是返回此错误 过程 t
  • 我在春天使用加载时间编织。如何在码头设置类加载器?

    我在春天使用加载时间编织 一切都可以在 websphere 上正常工作 因为它有自己的类加载器 但我在开发模式下遇到了麻烦 我使用嵌入式码头 如何在码头设置类加载器 当我运行它时 我看到以下错误 INFO org springframewo
  • 使用VBS自动截图

    我在从域中执行登录脚本时遇到问题 该脚本从本地电脑调用另一个批处理脚本 问题在于组策略之一是限制批处理脚本运行并禁用 cmd exe 有没有办法将我的批处理脚本转换为 vbscript 其中它使用 nircmd exe 每隔一分钟捕获一次屏
  • 如何找到数字数组中的前两个连续元素?

    例如 使用 Ruby 2 4 我有一个唯一的有序数字数组 1 7 8 12 14 15 如何找到差值为1的前两个元素 例如 上面的数组的答案是 7 和 8 你可以使用each cons and find从对数组中获取第一个元素 其中第二个元
  • OpenCV 与 C# 位图读取 jpg 文件

    经过多次实验 我发现在C OpenCV 中读取彩色jpg文件 auto temp cv imread xxx jpg 与使用 C 位图读取同一文件不同 var temp new bitmap xxx jpg 结果不同 如果我对它们应用一些算
  • ClipCursor 成功,但实际上什么也没做

    我正在编写一个非常简单的程序来将鼠标剪辑到指定的窗口 它从系统托盘运行 没有可见窗口 因为同一个窗口会有多个实例 所以它使用EnumWindows 迭代每个顶级窗口并将它们的 hwnd 与GetForegroundWindow 当 true
  • 通过 Cloud Datastore API 连接到开发中的 AppEngine 数据存储

    我们目前正在运行一个组合的 AppEngine GCE 应用程序 到目前为止 我们所有的数据存储访问都保留在 AppEngine 方面 现在我们正在探索允许我们的 GCE 实例对 共享 数据存储进行一些查询 首先 我试图弄清楚如何在本地运行
  • Java - 如何以多种方式对对象进行排序:Arrays.sort()、Comparable

    假设我有一个包含对象的数组 其中有一些员工 对象 他们都有 int age double salary 我想对这个数组进行排序 以便我的类实现Comparable
  • 从 Java 中的 ping 结果中解析出时间部分

    我设法修改一个程序来 ping 对等计算机并获取 ping 计数 我怎样才能解析出time ms实时 ping 计数结果 Code public static void main String args String ip 192 168
  • 在 Chrome 打包应用程序中抑制“无法加载资源:net::ERR_FILE_NOT_FOUND”

    当 Chrome 打包应用程序中的 Web 视图尝试加载不存在的本地文件时 我在控制台中收到消息 无法加载资源 net ERR FILE NOT FOUND 这是预期的 因为程序应该检查几个不同的位置 从本地系统开始 然后切换到远程服务器作
  • 检查 Android 是否有活动的互联网连接

    我正在尝试在我的应用程序中编写一个部分来区分活动 Wifi 连接和实际的互联网连接 使用连接管理器查找是否有活动的 Wifi 连接非常简单 但是每次我尝试测试在 Wifi 连接但没有互联网连接时是否可以连接到网站时 我都会陷入无限循环 我尝
  • VB.NET 数组 = 数组

    我正在尝试创建一个程序 在其中将数组分配给数组 它们是这样声明的 常量 Deck Size 52 私人甲板 Deck Size Table Deck Deck Size 作为字符串 所以 在我的程序中我写了这一行 甲板 Table Deck
  • 使用 rvest 进行网页抓取时出现 R 内存问题

    我在用rvest在 R 中进行网页抓取 我遇到了内存问题 我有一个 28 625 x 2 的字符串数据框 称为urls其中包含我正在抓取的页面的链接 框架的一行包含两个相关链接 我想生成一个 28 625 x 4 数据框Final以及从链接