使用 R 进行网页抓取:尽管在程序中使用了长时间暂停,但仍出现 HTTP 错误 503

2023-11-29

我正在尝试搜索ProQuest 存档器使用 R。我有兴趣查找包含特定关键字的报纸的文章数量。

通常使用它效果很好rvest工具。然而,该程序有时会崩溃。看这个最小的例子:

library(xml2)
library(rvest)

# Retrieve the title of the first search hit on the page of search results
for (p in seq(0, 150, 10)) {
  searchURL <- paste("http://pqasb.pqarchiver.com/djreprints/results.html?st=advanced&QryTxt=bankruptcy&sortby=CHRON&datetype=6&frommonth=01&fromday=01&fromyear=1908&tomonth=12&today=31&toyear=1908&By=&Title=&at_hist=article&at_hist=editorial_article&at_hist=front_page&type=historic&start=", p, sep="")
  htmlWeb <- read_html(searchURL)
  nodeWeb <- html_node(htmlWeb, ".text tr:nth-child(1) .result_title a") 
  textWeb <- html_text(nodeWeb)
  print(textWeb)
  Sys.sleep(0.1)
}

这有时对我有用。但是,如果我运行此脚本或类似的脚本几次,它会在同一点崩溃,并且在第 12 次迭代时出现错误(p=120):

Error in open.connection(x, "rb") : HTTP error 503.

我尝试通过增加长度的停顿来规避这个问题,但这没有帮助。

我也考虑过:

  • 保存无法访问的结果页面并为这些情况编写单独的脚本
  • 通过程序改变我的IP?
  • 通过程序退出并启动 R 一段时间?

我感谢您的任何评论。


尝试在延误时表现得更人性化一些。这对我有用(多次尝试):

library(xml2)
library(httr)
library(rvest)
library(purrr)
library(dplyr)

to_get <- seq(0, 150, 10)
pb <- progress_estimated(length(to_get))

map_chr(to_get, function(i) {
  pb$tick()$print()
  searchURL <- paste("http://pqasb.pqarchiver.com/djreprints/results.html?st=advanced&QryTxt=bankruptcy&sortby=CHRON&datetype=6&frommonth=01&fromday=01&fromyear=1908&tomonth=12&today=31&toyear=1908&By=&Title=&at_hist=article&at_hist=editorial_article&at_hist=front_page&type=historic&start=", i, sep="")
  htmlWeb <- read_html(searchURL)
  nodeWeb <- html_node(htmlWeb, "td > font.result_title > a")
  textWeb <- html_text(nodeWeb)
  Sys.sleep(sample(10, 1) * 0.1)
  textWeb
}) -> titles

print(trimws(titles))

##  [1] "NEWSPAPER SPECIALS."                                      
##  [2] "NEWSPAPER SPECIALS."                                      
##  [3] "New Jersey Ice Co. Insolvent."                            
##  [4] "NEWSPAPER SPECIALS."                                      
##  [5] "NEWSPAPER SPECIALS"                                       
##  [6] "AMERICAN ICE BEGINNING BUSY SEASON IN IMPROVED CONDITION."
##  [7] "NEWSPAPER SPECIALS"                                       
##  [8] "THE GERMAN REICHSBANK."                                   
##  [9] "U.S. Exploration Co. Bankrupt."                           
## [10] "CHICAGO TRACTION."                                        
## [11] "INCREASING FREIGHT RATES."                                
## [12] "A.O. BROWN & CO."                                         
## [13] "BROAD STREET GOSSIP"                                      
## [14] "Meadows, Williams & Co."                                  
## [15] "FAILURES IN OCTOBER."                                     
## [16] "Supplementary Receiver for Heinze & Co." 

我随机化了 sleep call 值,稍微简化了 CSS 目标,添加了进度条并自动创建了一个向量。您可能最终想要来自该数据的 data.frame,所以?purrr::map_df为了那个原因。

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

使用 R 进行网页抓取:尽管在程序中使用了长时间暂停,但仍出现 HTTP 错误 503 的相关文章

  • 导入 mgcv 失败,因为找不到 Rlapack.dll

    我想通过使用链接到 IronPython 中的 R 统计包R NET http rdotnet codeplex com 图书馆 它一直工作得很好 但现在我需要使用 R 的mgcv http cran r project org web p
  • 当我创建新变量时出了什么问题?

    我想根据原始变量施加的条件创建一个新变量 比方说 原始变量 var 是由 1 20 中的随机样本组成的向量 并且 当原来的 var 大于10时 新变量 newvar 被设置为缺失 当 var 小于10时 新变量 newvar 被设置为等于
  • 条件 RenderUI R 闪亮

    我的 renderUI 有问题 但在任何地方都找不到解决方案 可能我向谷歌问了错误的问题 不仅仅是一个闪亮的问题 而是一个基本的 R 问题 我在 R 中有一个函数 根据输入将返回一个表格或文本 所以我在我的 server R 中以这种方式创
  • R:重新列出平面列表

    这个问题 https stackoverflow com questions 8139677有一个很好的解决方案 可以在保留列表数据类型的同时展平列表 其中unlist才不是 flatten function x unlist vector
  • 不同元素的ggplot字体大小

    我知道在创建 ggplot 图后我可以使用theme get 返回所有主题元素的详细信息 这对于弄清楚诸如此类的事情非常有帮助strip text x等等 但我有两件事无法弄清楚 1 在下面的ggplot图形中 代表短语 被土拨鼠卡住的木头
  • R Shinydashboard 根据选项卡选择显示/隐藏 UI 元素

    如果有人可以提供帮助 我正在努力满足要求 我必须根据用户的选项卡面板选择在仪表板侧栏上显示 隐藏一些元素 这是 UI 代码的一部分 可让您了解我的应用程序的结构 我需要仅在 tabpPanel 2 上显示 Fourthoutput Fift
  • 如何在函数和循环中使用 data.table?

    在评估效用时data table vs dplyr 一个关键因素是在函数和循环中使用它的能力 为此 我修改了本文中使用的代码片段 data table 与 dplyr 一个可以做得很好而另一个不能做或做得很差吗 https stackove
  • R Shiny 中表格的条件格式

    我正在尝试可视化队列分析 并想使用RenderDataTable闪亮以获得这种可视化效果 我将能够突出显示基于具有值 1 0 的单独列的所有单元格 其中 1 被着色 0 不被着色 我尝试了几件事 包括尝试使用geom tile in ggp
  • 将缺失的行添加到数据表中

    我有一个数据表 library data table f lt data table id1 c 1 2 3 1 2 3 id2 as factor c a a b c b d v 1 6 key c id1 id2 id1 id2 v 1
  • 使用 kableExtra 增加行/行间距

    有没有办法在 r markdown 或 bookdown 中使用 kableExtra 增加 pdf 输出的行间距 library knitr library kableExtra kable head iris 5 caption Iri
  • R Markdown 文档标题中的希腊字母

    R markdown 文档的标题中是否可以包含希腊字母 我试过这个 title Amylase author author date 8 March 2017 output pdf document keep tex true toc ye
  • 如果在循环中调用summary()命令,如何获得它的输出?

    Suppose Z是特征名称的向量 如何让以下 Rscript 中的摘要命令实际打印 for var in Z cat i form paste crim var lm fit lm form data Boston summary lm
  • R中的预测和预测函数之间的区别

    两者之间有什么区别吗predict and forecast R 中的函数 如果是 在哪些具体情况下应该使用它们 Intro predict 适用于多种 R 对象 模型 基础库的一部分 forecast 对于时间序列 预测包的一部分 参见示
  • 如何禁用“保存工作区图像?” R 中的提示?

    当我退出交互式 R shell 时 它每次都会显示一个烦人的提示 gt gt Save workspace image y n c n 我总是对此回答 不 因为如果我想保存我的工作 我就会这么做before试图退出 如何去掉这个提示呢 No
  • 使用 != 子集 data.table 也排除 NA

    我有一个 data table 其中有一列NAs 我想删除该列具有特定值的行 恰好是 然而 我的第一次尝试导致我失去了行NA还有 gt a c 1 NA gt x lt data table a x a 1 1 2 3 NA gt y lt
  • 获取非零数据的列意味着

    R 可以获得数据帧非零值的 colMeans 吗 data lt data frame col1 c 1 0 1 0 3 3 col2 c 5 0 5 0 7 7 colMeans data 1 33 4 我想要这样的东西 mean dat
  • R:从本地 tar.gz 安装 R 软件包时找不到“make”

    R 包ConvCalendar不再位于 Cran 存储库中 请参阅here https cran r project org web packages ConvCalendar index html 然而 因为我在之前的项目中大量使用了这个
  • 如何将 Chrome 版本的网页提供给 python?

    我试图让用户轻松地从网页输入数字 我能想象的最简单的事情就是让他们提供一个 url 和一个与该号码关联的 xpath 然后我的代码可以去抓取数字 xpath 的概念 对于非编码人员来说 并不为人所知 但使用 Chrome 的 Inspect
  • 基于列重复数据集中的行,但增加行[重复]

    这个问题在这里已经有答案了 我有一个数据集 其中包含项目名称 开始年份和合同期限 我需要将这个数据集开发成时间序列 例如 我的数据集中的一行是 项目 A 开始年份 2003 年 合同期限 5 我想根据合同期限重复每一行 我的数据集如下所示
  • magrittr 管道中的 WOE

    如何将下面的证据代码权重放入 magrittr 管道中 df gt 我尝试过的一切似乎都不起作用 df library Information library magrittr df a c aa bb cc aa aa aa bb cc

随机推荐

  • 将 .XLSX 转换为 Google Sheet 并移动转换后的文件的脚本

    我知道可以使用脚本和驱动 API 将 Excel 文件转换为 Google Sheets 但我正在寻找脚本来转换 Excel 工作表并将转换后的文件移动到其他文件夹 所以需要的步骤如下 将 Excel xls xlsx 从文件夹 A 转换为
  • 即使我运行程序时也获得不同的线程顺序

    有人可以告诉我线程开始执行的顺序吗 我写了下面的代码 class NewThread implements Runnable Thread t NewThread creating a second thread t new Thread
  • 值类中的验证

    SIP 15 意味着可以使用值类别来定义新的数字类别 例如正数 是否可以在没有构造函数的情况下编写底层 gt 0 的约束 而不必调用单独的方法来验证约束 即 创建此类的有效实例是简洁的 如果值类具有构造函数的概念 那么这可能是进行如下验证的
  • Laravel 资源 URL 忽略 https

    我在模板中使用以下代码来加载 CSS 文件 如果我在本地计算机上通过 https 查看页面 则指向 app css 文件的链接也是 https 但是在我的实时服务器上 这种情况不会发生 如果你查看现场直播通过 https 并查看源代码 您可
  • 延续和回调有什么区别?

    我一直在浏览整个网络 寻找有关延续的启示 令人难以置信的是 最简单的解释竟然能让像我这样的 JavaScript 程序员完全困惑 当大多数文章用Scheme 中的代码解释延续或使用monad 时尤其如此 现在我终于认为我已经理解了延续的本质
  • 如何在 pyspark 数据框中创建连续数字列?

    我想创建带有连续数字的列pyspark从指定编号开始的数据帧 例如 我想添加列A到我的数据框df这将从5到我的数据帧的长度 增加一 所以5 6 7 length df 一些简单的解决方案使用pyspark方法 您可以使用以下方法执行此操作r
  • 如何从 php API 运行 casperJS 脚本

    我有一个 casperJS 脚本 通过命令行运行时会返回 JSON 我想最好在 PHP 中创建一个 API 它在命令行 casperJS Sample js 中运行脚本并返回 JSON 作为结果 您可以使用php casperjs库是一个简
  • 将双空格替换为单空格

    如何使用 C 将双空格替换为单空格 ex 1 2 3 4 5 gt 1 2 3 4 5 这就是我到目前为止所做的 int tmain int argc TCHAR argv string line ifstream myfile myFil
  • 使用 C# 或经典 ASP (VBScript) 从 PDF 中提取文本的好方法是什么? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 有没有一个好的库可以从 PDF 中提取文本 如果需要的话我愿意付出代价 与 C 或经典 ASP VBScript 一起使用的东西将是理想的 我还需要
  • 如何使用 3d 数组和 2d 数组 numpy 进行掩码

    如何使用 1d 数组从 3d 数组中选择一组元素 These are my 3 data types A numpy ndarray numpy ndarray float B1 numpy ndarray numpy ndarray nu
  • XML DOM 设置文本内容

    我需要将一个大 XML 拆分为许多 child xml 文件 除了更改值之外 我的代码可以正常工作 我需要插入我的字符串Titleproper Bla bla text
  • Python 文本中重复的短语

    我有一个问题 我不知道如何解决它 请给一个建议 我有一条文字 好大好大的文字 任务是找到文本中所有长度为3 包含三个单词 的重复短语 在我看来 你有两个问题 第一个是提出一种标准化输入的有效方法 你说你想找到输入中的所有三词短语 但是短语是
  • preg_match 获取多个

    我有一个类似于 w e 更多 HTML 的页面 我需要获取标签之间的所有数据 而不是第一个数据 目前我使用
  • AWS Athena - 查询分区中不同年份的数据

    我们在 S3 中划分了大型数据集 例如s3 bucket year YYYY month MM day DD file csv 查询 Athena 中不同年份的数据并利用分区的最佳方式是什么 这是我尝试过的2018 03 07 至 2020
  • var_dump(对象)的结果是什么意思?

    var dump object 返回 object 1我真的很想知道 object 1 object 2 和 object 3 之间有什么区别 任何帮助表示赞赏 对于具有相同信息 相同类 相同属性 的对象 它允许确定它们是否是相同的实例 例
  • 如何禁用 Windows 编辑控件上的小触摸键盘

    在支持平板电脑的 Windows 版本中 当编辑控件获得焦点时 会出现一个小键盘图标 如果您触摸它 触摸键盘就会弹出 有办法禁用这个吗 如果你有自己的触摸键盘 那就相当不方便了 我想对代码中的某些编辑控件禁用它 即 我不是在寻找 Windo
  • 如何将 Cython 生成的模块从 python 导入到 C/C++ 主文件? (C/C++ 编程)[关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 因此 我有一个用 python 编写的函数 并且按照 Cython 文档 使用 distutils 构建 Cython 模块 中的步骤进行操作 但是 我不清楚如何使用在 python
  • 新添加的列的数据未保存到数据库

    我在 Rails 4 应用程序中使用 Devise 进行用户身份验证 最近 我向用户模型添加了两个新列 他们是first name and last name 然后 我使用这两个属性的字段更新了登录表单 但是 当我测试创建新用户时 两者都没
  • PHP 标头函数的替代方案

    我正在开发一个具有许多样式表的网站 所有这些样式表都需要作为 PHP 脚本服务器端进行处理 我的 htaccess文件看起来像这样
  • 使用 R 进行网页抓取:尽管在程序中使用了长时间暂停,但仍出现 HTTP 错误 503

    我正在尝试搜索ProQuest 存档器使用 R 我有兴趣查找包含特定关键字的报纸的文章数量 通常使用它效果很好rvest工具 然而 该程序有时会崩溃 看这个最小的例子 library xml2 library rvest Retrieve