Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用readLines和R中的循环从多个网页中获取信息?

如何使用readLines和R中的循环从多个网页中获取信息?
EN

Stack Overflow用户
提问于 2020-02-09 20:53:09
回答 1查看 34关注 0票数 0

我正在尝试从公开的秘密网页上搜集关于2018年美国国会选举的数据。每个地区都有不同的URL。在单个URL上使用readLines可以精确地得到我想要的输出。这为我提供了亚利桑那州第一区的正确输出:

代码语言:javascript
运行
AI代码解释
复制
dollars <- readLines("https://www.opensecrets.org/races/summary?cycle=2018&id=AZ01&spec=N", encoding ='UTF-8')

然而,我想要得到所有435个地区的所有信息。我知道我可以手动创建一个URL矢量,但这似乎非常低效。相反,我希望遍历所有共享相同基址的URL。我正在尝试使用以下代码:

代码语言:javascript
运行
AI代码解释
复制
Parl_all <- list()
for (i in 1:435) {
df <- readLines(paste("https://www.opensecrets.org/races/summary?
  cycle=2018&id=",i,"&spec=N", sep=""), encoding = 'UTF-8')
df <- str_replace_all(df, "<img src='images/check.gif'>", "<font 
size='2'>Yes</font>")
df <- read_html(toString(df))
df <- as.data.frame(html_table(df, fill=TRUE))
df$district <- i
Parl_all[[i]] <- df
}

但它给出了以下错误:

代码语言:javascript
运行
AI代码解释
复制
``Error in `$<-.data.frame`(`*tmp*`, "session", value = 1L) : 

替换有1行,数据有0个

显然,数据没有被抓取。有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2020-02-09 22:11:50

这是因为您只是将数字1到435粘贴到url的"id“字段中。你需要国会选区的简称,比如AZ01VA03等。下面是它们的矢量:

代码语言:javascript
运行
AI代码解释
复制
districts <- c("AL01", "AL02", "AL03", "AL04", "AL05", "AL06", "AL07", 
"AR01", "AR02", "AR03", "AR04", "AS98", "AZ01", "AZ02", "AZ03", 
"AZ04", "AZ05", "AZ06", "AZ07", "AZ08", "AZ09", "CA01", "CA02", 
"CA03", "CA04", "CA05", "CA06", "CA07", "CA08", "CA09", "CA10", 
"CA11", "CA12", "CA13", "CA14", "CA15", "CA16", "CA17", "CA18", 
"CA19", "CA20", "CA21", "CA22", "CA23", "CA24", "CA25", "CA26", 
"CA27", "CA28", "CA29", "CA30", "CA31", "CA32", "CA33", "CA34", 
"CA35", "CA36", "CA37", "CA38", "CA39", "CA40", "CA41", "CA42", 
"CA43", "CA44", "CA45", "CA46", "CA47", "CA48", "CA49", "CA50", 
"CA51", "CA52", "CA53", "CO01", "CO02", "CO03", "CO04", "CO05", 
"CO06", "CO07", "CT01", "CT02", "CT03", "CT04", "CT05", "CTZZ", 
"DC98", "DE00", "FL01", "FL02", "FL03", "FL04", "FL05", "FL06", 
"FL07", "FL08", "FL09", "FL10", "FL11", "FL12", "FL13", "FL14", 
"FL15", "FL16", "FL17", "FL18", "FL19", "FL20", "FL21", "FL22", 
"FL23", "FL24", "FL25", "FL26", "FL27", "GA01", "GA02", "GA03", 
"GA04", "GA05", "GA06", "GA07", "GA08", "GA09", "GA10", "GA11", 
"GA12", "GA13", "GA14", "GU98", "HI01", "HI02", "IA01", "IA02", 
"IA03", "IA04", "ID01", "ID02", "IL01", "IL02", "IL03", "IL04", 
"IL05", "IL06", "IL07", "IL08", "IL09", "IL10", "IL11", "IL12", 
"IL13", "IL14", "IL15", "IL16", "IL17", "IL18", "ILZZ", "IN01", 
"IN02", "IN03", "IN04", "IN05", "IN06", "IN07", "IN08", "IN09", 
"KS01", "KS02", "KS03", "KS04", "KY01", "KY02", "KY03", "KY04", 
"KY05", "KY06", "LA01", "LA02", "LA03", "LA04", "LA05", "LA06", 
"MA01", "MA02", "MA03", "MA04", "MA05", "MA06", "MA07", "MA08", 
"MA09", "MD01", "MD02", "MD03", "MD04", "MD05", "MD06", "MD07", 
"MD08", "ME01", "ME02", "MI01", "MI02", "MI03", "MI04", "MI05", 
"MI06", "MI07", "MI08", "MI09", "MI10", "MI11", "MI12", "MI13", 
"MI14", "MIZZ", "MN01", "MN02", "MN03", "MN04", "MN05", "MN06", 
"MN07", "MN08", "MO01", "MO02", "MO03", "MO04", "MO05", "MO06", 
"MO07", "MO08", "MS01", "MS02", "MS03", "MS04", "MT00", "NA98", 
"NC01", "NC02", "NC03", "NC04", "NC05", "NC06", "NC07", "NC08", 
"NC09", "NC10", "NC11", "NC12", "NC13", "ND00", "NE01", "NE02", 
"NE03", "NH01", "NH02", "NJ01", "NJ02", "NJ03", "NJ04", "NJ05", 
"NJ06", "NJ07", "NJ08", "NJ09", "NJ10", "NJ11", "NJ12", "NM01", 
"NM02", "NM03", "NV01", "NV02", "NV03", "NV04", "NY01", "NY02", 
"NY03", "NY04", "NY05", "NY06", "NY07", "NY08", "NY09", "NY10", 
"NY11", "NY12", "NY13", "NY14", "NY15", "NY16", "NY17", "NY18", 
"NY19", "NY20", "NY21", "NY22", "NY23", "NY24", "NY25", "NY26", 
"NY27", "OH01", "OH02", "OH03", "OH04", "OH05", "OH06", "OH07", 
"OH08", "OH09", "OH10", "OH11", "OH12", "OH13", "OH14", "OH15", 
"OH16", "OK01", "OK02", "OK03", "OK04", "OK05", "OR01", "OR02", 
"OR03", "OR04", "OR05", "PA01", "PA02", "PA03", "PA04", "PA05", 
"PA06", "PA07", "PA08", "PA09", "PA10", "PA11", "PA12", "PA13", 
"PA14", "PA15", "PA16", "PA17", "PA18", "PR98", "RI01", "RI02", 
"SC01", "SC02", "SC03", "SC04", "SC05", "SC06", "SC07", "SD00", 
"TN01", "TN02", "TN03", "TN04", "TN05", "TN06", "TN07", "TN08", 
"TN09", "TX01", "TX02", "TX03", "TX04", "TX05", "TX06", "TX07", 
"TX08", "TX09", "TX10", "TX11", "TX12", "TX13", "TX14", "TX15", 
"TX16", "TX17", "TX18", "TX19", "TX20", "TX21", "TX22", "TX23", 
"TX24", "TX25", "TX26", "TX27", "TX28", "TX29", "TX30", "TX31", 
"TX32", "TX33", "TX34", "TX35", "TX36", "UT01", "UT02", "UT03", 
"UT04", "VA01", "VA02", "VA03", "VA04", "VA05", "VA06", "VA07", 
"VA08", "VA09", "VA10", "VA11", "VI98", "VT00", "WA01", "WA02", 
"WA03", "WA04", "WA05", "WA06", "WA07", "WA08", "WA09", "WA10", 
"WI01", "WI02", "WI03", "WI04", "WI05", "WI06", "WI07", "WI08", 
"WV01", "WV02", "WV03", "WY00")

以下是使用此向量中的前几个元素的完整工作示例:

代码语言:javascript
运行
AI代码解释
复制
library(stringr)
library(rvest)

districts <- c("AL01", "AL02", "AL03", "AL04", "AL05", "AL06", "AL07", 
               "AR01", "AR02", "AR03", "AR04", "AS98", "AZ01", "AZ02", "AZ03")

get_table <- function(district) 
{
  "https://www.opensecrets.org/races/summary"                                  %>%
  paste0("?cycle=2018&id=", district, "&spec=N")                               %>%
  readLines()                                                                  %>%
  str_replace_all("<img src='images/check.gif'>", "<font size='2'>Yes</font>") %>%
  toString()                                                                   %>%
  read_html()                                                                  %>%
  html_table(fill = TRUE)                                                      %>%
  as.data.frame()
}

Parl_all        <- lapply(districts, get_table)
names(Parl_all) <- districts

现在您有一个名为每个国会选区的列表,因此您可以执行以下操作

代码语言:javascript
运行
AI代码解释
复制
Parl_all$AL01
#>                                                                                                        Candidate
#> 1 ,                           Bradley Byrne (R),  • Incumbent • Winner                          (63.2% of vote),
#> 2                 ,                           Robert Kennedy Jr. (D),                           (36.8% of vote),
#>       Raised    Spent Cash.on.Hand Last.Report
#> 1 $1,460,041 $831,634   $1,074,725  12/31/2018
#> 2    $46,845  $46,845           $0  12/31/2018
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60141208

复制
相关文章
vue-chartjs文档翻译
vue-chartjs 是 Vue 对于 Chart.js 的封装. 你可以很简单的创建可复用的图表组件.
治电小白菜
2020/08/25
6.1K0
为什么Vue(默认情况下)比React性能更好
本文不是要辩论 Vue 好还是 React 好,而是要看看这两个框架在低层次上是如何选择的。
前端小智@大迁世界
2022/09/28
6520
为什么Vue(默认情况下)比React性能更好
禁用wordpress模板默认样式
  我们知道wordpress主题比如twentytwenty都会有样式,如果不想使用它们的默认样式怎么处理呢?其实很简单,随ytkah一起来看看吧。进入2020主题的function.php文件,里面有Register and Enqueue Styles和Register and Enqueue Scripts的函数定义,大概177行左右,将它们注释就可以了
ytkah
2019/11/23
1K0
禁用woocommerce默认样式stylesheet
  用woocommerce建站有时我们不想要它的默认样式,那要如何屏蔽呢?当然ytkah是不会告诉你去注释删除css代码的,默认情况下WooCommerce会嵌入3个样式表,我们可以通过在当前主题的function.php文件中添加以下代码禁用它们,
ytkah
2020/02/13
1.6K0
数据集 | 信用卡客户的默认数据集
这项研究针对中国台湾客户的违约支付情况,并比较了六种数据挖掘方法中的违约概率的预测准确性。
数据科学人工智能
2022/03/30
9120
数据集 | 信用卡客户的默认数据集
禁用iOS的UIView长按默认操作
很多时候需要禁用移动设备的默认行为,比如长按一个a链接的按钮(href写的是javascript:;)会提示是否打开/取消。而-webkit-touch-callout 在ios8中是失效的,查资料说是一个bug。还有另外一种做法就是设置pointer-events:none;不过这个属性太狠了,会导致页面的tap等事情都失效。
meteoric
2018/11/19
1.1K0
javascript禁用链接跳转等默认动作
比如,有一个链接,你要在这个链接跳转前执行一些其他操作,显然,我们能想到给它添加一个单击(onclick)事件,然后执行其他的一些操作,但是你会发现,你所定义的单击事件里的操作并没有执行,而直接进行了页面跳转。那这样,我们就应该先要禁用它的链接,然后执行自定义的操作,再进行跳转或执行其他操作,那么,我们该如何禁用链接,禁用它的默认动作呢?这个问题,我们在开发中很少遇到,但遇到了也并不难处理。
Petrochor
2022/06/07
1.3K0
WordPress博客默认站点地图使用禁用教程分享
Wordpress 5.5开始官方内置了站点地图,那么WordPress 5.5的内置网站地图怎么使用呢?我不想使用它该怎么操作呢?下面一起来看看官方文档的解释。注:如果不需要,建议禁用此功能。
文曦
2022/06/09
6770
MYSQL 默认情况下 MYSQL 是ACID 吗?
最近的世界变化是快, 平行宇宙"被发现", 地球人是外星人的培育的"猿猴",到被抛弃,每天都在刷新. 前几天的MYSQL的事务错误不会滚的问题, 有同学反映没有太明白.
AustinDatabases
2020/07/06
1.6K0
vue阻止默认事件
有一天,当回顾自己走过的路时,你会发现这些奋斗不息的岁月,才是最美好的人生。——弗洛伊德 今天写一个页面的时候,遇到一个问题 这是一个简单的elementUI的折叠面板 我在自定义标题里加了个el-link标签,执行一个函数,打印一句话 代码 <!-- --> <template> <div class ref="message"> <el-collapse v-model="activeName" accordion> <el-collapse-item name="1
阿超
2022/08/16
2.6K0
vue阻止默认事件
Spring Batch 在默认情况下的任务执行
考察项目:https://github.com/cwiki-us-spring/cwiki-us-spring-batch-examples 你可以 Check out 到本地后运行:
HoneyMoose
2020/02/19
6730
Spring Batch 在默认情况下的任务执行
考察项目:https://github.com/cwiki-us-spring/cwiki-us-spring-batch-examples 你可以 Check out 到本地后运行:
HoneyMoose
2020/02/24
1.2K0
如何在 Flutter 中禁用默认的 Widget 飞溅效果
默认情况下,许多 Flutter Material Design 小部件在被选中时会显示飞溅效果。
徐建国
2021/08/09
2.5K0
Matlab默认字符集问题
因为我经常使用VSCode看东西,但是Matlab默认不是UTF-8的字符集,这样就会乱码。
云深无际
2021/09/14
9670
Matlab默认字符集问题
20 多个好用的 Vue 组件库
地址:https://github.com/matfish2/vue-tables-2
唐志远
2022/10/27
8K0
20 多个好用的 Vue 组件库
在Windows下如何创建虚拟环境(默认情况下)
很多小伙伴平时在使用Python的时候,有的项目需要使用Python2来进行开发,有的项目则是需要Python3来进行开发。当不清楚怎么分开环境的时候,此时两个环境开始打架,彼此傻傻分不清楚。虚拟环境作为隔离的利器应运而生,其实虚拟环境最大的好处就是将我们的开发环境进行隔离,让彼此相互不受影响。今天,小编给大家简单的介绍一下如何在Windows下创建虚拟环境,具体的教程如下。
Python进阶者
2018/08/03
6690
在Windows下如何创建虚拟环境(默认情况下)
vue图片加载失败默认图片[通俗易懂]
1,img是个比较特殊的标签,和video一样具有被替代性,所有当图片加载成功时,原先定义的伪类会失去作用不提示。
全栈程序员站长
2022/09/05
2.3K0
vue图片加载失败默认图片[通俗易懂]
默认情况下 80% 的 Android 应用正在使用加密流量
谷歌方面表示,截至 2019 年 10 月,五分之四(80%)可通过官方 Play 商店下载的 Android 应用程序正在使用 HTTPS 加密各自的网络流量。而对于直接针对 Android 9 的应用,该数字甚至更高,达到 90%。这意味着进入或离开这些应用程序之一的流量是经过加密的,第三方无法拦截或读取。
用户8639654
2021/09/22
4260
火狐浏览器已默认禁用Flash:用户仍可手动开启
北京时间7月14日下午消息,就在Facebook新任首席安全官昨天呼吁放弃Flash技术后,Mozilla火狐浏览器也正式屏蔽了这种技术。 火狐团队主管马克·施密特(Mark Schmidt)通过Twitter证实,这款浏览器已经在最新的一次更新中屏蔽了所有版本的Flash播放器。 施密特指出,火狐用户仍然可以在设置菜单中启用Flash,但该公司显然认为,现代化的互联网已经不再需要这种过时的播放器。 事实上,科技行业对Flash的批评早已有之:已故苹果联合创始人史蒂夫·乔布斯(Steve Jobs)早在20
我是攻城师
2018/05/11
1.1K0
数据集 | 图书数据集
下载数据集请登录爱数科(www.idatascience.cn) 由电商平台爬取的图书信息,包括书名、出版信息、当前价格等。 1. 字段描述 2. 数据预览 3. 字段诊断信息 4. 数据来源 当当网搜索页面爬取。
数据科学人工智能
2022/03/30
2.3K0
数据集 | 图书数据集

相似问题

3D立方体边重叠

114

Unity 3D中的GameObject.Find()

534

3d立方体opengl -重叠边

13

Unity:将按钮脚本添加到3D gameObject

20

将3D文本插入到立方体GameObject的正面

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档