如何在 R 中抓取 JSP 页面?

2023-12-04

我想在 R 中抓取以下页面的内容:http://directoriosancionados.funcionpublica.gob.mx/SanFicTec/jsp/Ficha_Tecnica/SancionadosN.htm

但是,我无法找到任何 HTML 标签或任何其他可以帮助我获取信息的工具。

我有兴趣使用“INHABILITADOS Y MULTADOS”部分的信息构建一个数据框,如下图所示:

这是我想要抓取的特定选项

选择此选项后,会出现一个包含多个提供程序的菜单,每个提供程序都有一张特定的表格,其中包含我想要记住的信息。

供应商名单

最后想抓取的信息


通常,您可以使用 GET 方法进行请求。但对于该网站,您需要使用 POST 方法:

在chrome开发者模式下检查网络选项卡(按F12)

enter image description here

在下图中,在 POST 请求正文中提交表单数据。

enter image description here

enter image description here

在 onclick 中查找模式:onclick值用于提交表单

pattern


以下脚本应该可以工作:

library(httr)
library(rvest)
library(stringr)
library(dplyr)
my_url <- "http://directoriosancionados.funcionpublica.gob.mx/SanFicTec/jsp/Ficha_Tecnica/SancionadosN.jsp"
my_ua <- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36"


#use post method instead of get to get correct response
response <- POST(my_url,
                 user_agent(my_ua),
                 body = list(cmdsan = "INHABILITA",
                             tipoqry = "INHABILITA",
                             mostrar_msg = "SI"),
                 encode = "form")


href_nodes <- content(response) %>%
  html_node("table") %>%
  html_nodes("a")

link_text <- href_nodes %>% 
  html_text() %>% 
  as.tibble() %>%
  rename(text = value)

form_items <- href_nodes %>% 
  html_attr("onclick") %>% # extract items to POST
  str_extract("(?<=\\().*?(?=\\))") %>% # extract everything inside brackets
  str_split("\\,",simplify = T) %>%# split POST items
  as.tibble() %>%
  mutate(V1 = str_sub(V1,start = 2,end =-2))


submit_table <- bind_cols(link_text,form_items)

#using POST method to get to the page you want
#for example, if you want to go to page A Y M CONSTRUCTORA, S.A. DE C.V (row 2)
#you should:

row_num <- 2

my_url2 <- "http://directoriosancionados.funcionpublica.gob.mx/SanFicTec/jsp/Ficha_Tecnica/FichaSinTabla.jsp"

response1 <- POST(my_url2,
                 user_agent(my_ua),
                 body = list(expe = submit_table$V1[row_num],
                             tipo = submit_table$V2[row_num],
                             persona = submit_table$V3[row_num]),
                 encode = "form")

内容在submit_table,稍后将使用它来发出 POST 请求以获取每个单独页面中的内容。

> submit_table 
# A tibble: 1,329 x 4
text                                        V1             V2    V3   
<chr>                                       <chr>          <chr> <chr>
  1 A AND P INTERNATIONAL                       185770002/2016 1     3    
2 A Y M CONSTRUCTORA, S.A. DE C.V.            000090121/2006 1     3    
3 A Y V INDUSTRIAL Y COMERCIAL, S.A. DE C.V.  184000001/2013 1     3    
4 A+D ARQUITECTOS, S.A. DE C.V.               181640187/2006 1     3    
5 A.D.C. Consultores y Servicios, S.A de C.V. 111510007/2005 1     3    
6 AARON VERA MORALES                          006410056/2011 1     3    
7 ABASTECEDORA DE FÁRMACOS, S.A. DE C.V.      006410002/2014 1     3    
8 ABASTECEDORA EZCO, S.A. DE C.V.             000070024/2016 1     3    
9 ABEL ZURITA MAYO                            000200012/2014 1     3    
10 ABS TECNOLOGÍA, S.A. DE C.V.                090850001/2016 1     3    
# ... with 1,319 more rows

您可以使用 rvest 中的函数通过响应来提取这些元素:

(content(response1) %>% html_nodes(".normal") %>% html_text() %>% str_trim())[3]

将返回:

[1] "Publicación en el DOF: 05 DE ABRIL DE 2007Monto de la Multa: $ 72,540.00Plazo de inhabilitación: 3 MESESInicia: 06 DE ABRIL DE 2007Termina: 06 DE JULIO DE 2007"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 R 中抓取 JSP 页面? 的相关文章

  • 数据表中的最大行数

    我的 data table 中有一个包含 8 000 000 行 100 列的数据集 其中每列都是一个计数 我需要找到每行的最大计数以及该最大值位于哪一列 我可以使用以下命令快速获取每行的哪一列具有最大值 dt lt dt maxCol w
  • Shiny:如何在数据表中显示条形图

    我想在数据表中显示条形图 这link http jsfiddle net annoyingmouse em27yod1 显示我想使用 javascript 做什么 我不了解 javascript 或 html 所以你能告诉我是否可以使用闪亮
  • 将函数应用于因子相关子矩阵

    我有一个对称矩阵 数据框 看起来像 structure list HQ673618 1 c NA 90 8 89 8 89 6 89 8 88 9 87 8 88 2 88 3 HQ674317 1 c 90 8 NA 98 6 97 7
  • 从 R 中的数据框/矩阵中选择一列时保留列名称

    在R中 当我只从数据框 矩阵中选择一列时 结果将变成一个向量并丢失列名称 如何保留列名称 例如 如果我运行以下代码 x lt matrix 1 3 3 colnames x lt c test1 test2 test3 x 1 我会得到 1
  • 将不规则时间序列拆分为规则月平均值 - R

    为了确定季节性对能源使用的影响 我需要将计费数据库中的能源使用信息与每月温度进行调整 我正在使用一个计费数据集 其中包含不同长度以及开始日期和结束日期的账单 并且我希望获得每个月内每个帐户的月平均值 例如 我有一个计费数据库 具有以下特征
  • R文本文件和文本挖掘...如何加载数据

    我正在使用 R 包tm我想做一些文本挖掘 这是一个文档 被视为一个词袋 我不明白有关如何加载文本文件并创建必要的对象以开始使用诸如 之类的功能的文档 stemDocument x language map IETF Language x 所
  • 使用 markovchain 包计算观察序列的概率

    让我们使用来自的数据集这个问题 https stats stackexchange com questions 26722 calculate transition matrix markov in r dat lt data frame
  • 仅当 css 文件存在时才将其包含在 jsp 中

    我正在尝试使用默认 css 设计一个应用程序 我想要一个选项 我可以包含新的 css 自定义 文件来更改默认皮肤 我可以通过在 jsp 页面中引用 自定义和默认 css 来实现此目的 其中默认值将始终存在 并且可以为不同用户加载自定义 cs
  • 如何使用 formattable 折叠表中的行值组?

    我有兴趣使用以下领域的工具formattableR 包 但我只想在表中显示有更改的地方 也就是说 我想要在kableExtra包通过collapse rows 功能 例如 使用kable and kableExtra 我可以做这个 libr
  • 通过 rpy2 将 numpy 数组传递给 R 时出现不一致数组

    我正在尝试将 numpy 数组传递到 R 中的 GAMLSS 包 import numpy as np import rpy2 robjects as robjects from rpy2 robjects import numpy2ri
  • Android:从http获取文件并存储在SDCard中

    我已经遵循了许多类似问题中所写的内容 但仍然存在问题 从jsp我得到一个pdf 如果我转到URL 浏览器会自动打开pdf jsp页面会执行类似以下操作 Gets the pdf from the database BufferedInput
  • data.table 和 pmin 带有 na.rm=TRUE 参数

    我正在尝试使用 pmin 函数和 data table 计算行间的最小值 类似于帖子data table 中的逐行操作和更新 https stackoverflow com questions 16860200 row by row ope
  • 如何计算大型数据集的平均值

    我正在使用一个数据集 该数据集每天 24 小时每小时读取一次温度读数 已有 100 多年的历史 我想获得每天的平均温度以减少数据集的大小 标题看起来像这样 YR MO DA HR MN TEMP 1943 6 19 10 0 73 1943
  • R数据表:如何找到特定单元格正下方的未知数量的空单元格并用编号字符串填充它们

    我知道如何找到空的cells in a data table一般来说 但这有点棘手 我还没有完全弄清楚如何管理它 可以说我有一个data table其中在df 2 1 包含我需要定位的关键字字符串 智能触发 在这种情况下 仪器用户使用的智能
  • 如何使 R barplot 上的列标签变为斜体

    这可能是一个简单的问题 但是如何仅将条形图上的列标签设为斜体 而不是斜体x axis标签 但列标签是专门的 到目前为止我的代码是 bp barplot means names arg c CON TRI ylim c 0 120 ylab
  • R:连接到 Teradata 时 JDBC() 找不到 Java 驱动程序路径

    我正在尝试通过 RStudio 连接到 Teradata 但由于某种原因 JDBC 函数在识别 Java 驱动程序所在的路径时出现问题 请参阅下面的代码 library RODBC library RJDBC library rJava b
  • 使用 R.Net 版本 1.5.5 创建 REngine 实例

    我正在尝试创建一个 Hello World 示例R Language using R Net版本1 5 5 从 NuGet 加载 不幸的是 我见过的在线示例都不起作用 这就是我所做的 已安装Microsoft R Open 3 2 4 增强
  • 如何在 R闪亮中使操作不间断

    在我闪亮的应用程序中 我有一个应该不断更新自身的输出 但是每当我执行长时间运行的计算时 输出就会暂停 我的问题是 如何让输出持续不间断地运行 请参阅下面的简短演示 时钟每一秒刷新一次 但如果我单击运行 5 秒的按钮 时钟就会暂停 libra
  • 如何在 RStudio 窗口模式下设置闪亮的应用程序大小?

    我想知道是否有办法在 RStudio 中以预先指定的窗口大小的窗口模式启动闪亮应用程序 我通过使用以下代码创建新文件找到了解决方法 library shiny vwr dialogViewer modellvergleiche irt wi
  • Leaflet R 闪亮:选择和缩放

    我正在开发一个带有闪亮和传单的工具 我希望当客户点击变量时 参见 UI 代码 例如 NE 地图会转到另一个视图 例如纯传单中的这样 L easyButton strong NE strong function zoomTo setView

随机推荐

  • 基本构造函数必须具有相同的返回类型

    我想将 jsx 重写为 tsx 我有一个从react bootstrap方法重写方法的代码 import Panel from react bootstrap class CustomPanel extends Panel construc
  • C++11 - 无法使用 constexpr 函数定义 constexpr 文字吗?

    我遇到了一个看似违反直觉的错误 即无法分配 a 的值constexpr函数为constexpr字面意思 希望我使用的语言是正确的 这是例子 class MyClass public static constexpr int FooValue
  • 如何设置按键绑定?

    此应用程序的箭头键需要引起独立于焦点的按下和释放事件 设置 onKeyRelease true 会按预期导致释放事件 但设置 onKeyRelease false 下面的代码 似乎不会停止自动重复 有没有办法实现按键绑定在按住方向键时触发一
  • 如何使用 VBA 以编程方式添加引用

    我编写了一个程序 该程序运行并在完成时向 Skype 发送信息 我需要添加参考Skype4COM dll以便通过 Skype 发送消息 我们在网络上有十几台计算机和一个共享文件服务器 除其他外 所有其他计算机都需要能够运行该程序 我希望避免
  • 从 Javascript 调用 Azure 函数

    我有一个简单的 HTML 页面 其中有一个文本框和一个提交按钮 我有一个 Azure 函数 当点击时 它会接收文本框的内容 我们应该将其发送到 Azure 函数并发送邮件 代码是用 C 在 Azure 函数中编写的 我做了什么 我获取了文本
  • git pull - 默认情况下它会在远程获取标签吗?

    I know git fetch tags将从远程获取所有标签到本地 我不确定会git pull默认从远程获取标签 那么会不会呢 默认情况下 git pull 将仅获取所获取的对象可访问的标签 来自git pull文档 无标签 默认情况下
  • 执行 Google Prediction API 命令行示例时出错

    我已经下载了预测 api 的示例命令行程序并导入到 eclipse 中 如前所述here 我已导入该示例程序 并将 client secrets json 的内容替换为我从 api 控制台下载的文件值 如上面的链接所述 我已经使用构建了模型
  • 带有通配符的列表会导致通用巫术错误

    有谁知道为什么下面的代码不能编译 add 和 addAll 都不能按预期工作 删除 扩展 部分使一切正常 但随后我将无法添加 Foo 的子类 List
  • Pinterest 样式布局与 CSS,但水平堆叠而不是垂直堆叠[重复]

    这个问题在这里已经有答案了 我正在尝试创建一个 pinterest 样式布局 而不使用 Packery 或任何 JS 我尝试过使用 CSS3 列 但它们垂直堆叠 看到这里的小提琴 https jsfiddle net 2otpzbgt 1
  • Laravel 4:Input::get() 不起作用

    使用 CentOS 7 的生产服务器中发生了一些奇怪的事情 问题是 在我的本地环境中 我有许多使用 Laravel 4 开发的应用程序 并安装在 CentOS 6 5 或 7 等服务器中 并且运行良好 但这在这部分 我无法使用 Input
  • 如何在 Vuetify 上创建嵌套菜单?

    我目前正在使用 Vuetify 1 5 18 并在尝试使用以下命令创建嵌套菜单时遇到一些问题toolbar组件和list group 菜单正在工作 但是当我单击展开时它会关闭 这是代码笔 https codepen io fabiozanc
  • 编写 stackoverflow 风格“问题”/“标签”翻转按钮的最佳方法

    实现像 Stackoverflow 顶部的 问题 标签 用户 那样的滚动 按钮 的最佳方法是什么 它实际上是这样实现的 div class nav ul class primarynav li class a href questions
  • 访问 firefox cookies.sqlite 错误

    当我尝试访问 Firefox 配置文件文件夹中的 cookies sqlite 时 出现以下错误 sqlite gt table Error database is locked 您认为错误是什么 编辑 当我关闭 Firefox 并阅读后
  • Laravel 的 utf8 编码问题

    部署我的 laravel 网站 在本地正常工作 后遇到问题 有些文本编码不正确 例如 Jo l 应该是 Jo l 一些信息 并非所有视图都会受到影响 某些变量在一个视图中正确呈现 但在另一个视图上被破坏 这让我认为这不是 mysql 问题
  • img src=webContentLink 中的 Google 云端硬盘图像?

    我可以使用存储在 Google Drive 中的图像通过 html 在网站中使用吗 img src Where
  • 每个新的 ClickOnce 部署版本都会丢失 VB.NET“My.Settings”

    我正在使用 VB NET 中内置的 My Settings 功能来保存应用程序设置 这很方便 但我注意到每次发布新版本时 设置都会丢失 为什么以及如何预防 您需要手动更新您的应用程序设置 我使用这个简单的方法 创建一个名为 MustUpgr
  • 使用 spring-boot:1.5.1 和 spring-cloud-stream 时无法启动 bean 'inputBindingLifecycle'

    使用 spring boot 1 5 1 时出现以下错误 但使用 spring boot 1 4 4 时未出现以下错误 有人遇到过这种情况吗 package org test import lombok Data import lombok
  • 在可可中使用结构列表有意义吗?

    这个问题由此衍生one 在 cocoa 中使用结构列表并不简单 要么使用NSArray并进行编码 解码 要么使用C类型数组并失去NSArray的商品 结构应该很简单 但是当需要列表时 人们倾向于构建一个类 什么时候在可可中使用结构列表才有意
  • Angular 4 路由器在 routerLink 导航上附加组件而不是销毁它们

    当从子模块内从子路由导航到另一个同级子路由时 路由器不会销毁前一个组件 而是在向前和向后导航时附加新组件 为什么会发生这种情况 开始于 subscriber lookup 搬到 subscriber register route a Sub
  • 如何在 R 中抓取 JSP 页面?

    我想在 R 中抓取以下页面的内容 http directoriosancionados funcionpublica gob mx SanFicTec jsp Ficha Tecnica SancionadosN htm 但是 我无法找到任