我想从这个网址中删除匹配时间和日期:
http://www.scoreboard.com/game/rosol-l-goffin-d-2014/8drhX07d/#game-summary
通过使用chrome dev工具,我可以看到这似乎是使用以下代码生成的:
<td colspan="3" id="utime" class="mstat-date">01:20 AM, October 29, 2014</td>
Run Code Online (Sandbox Code Playgroud)
但这不是源html.
我认为这是因为它的java(纠正我,如果我错了).如何使用R抓取此信息?
我正在尝试从我使用rvest的网址列表中搜索纬度/经度数据.每个网址都有一个包含特定位置的嵌入式谷歌地图,但网址本身并未显示API所采用的路径.
在查看页面源代码时,我看到我所关注的部分在这里:
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false">
</script>
<script type="text/javascript">
function initialize() {
var myLatlng = new google.maps.LatLng(43.805170,-70.722084);
var myOptions = {
zoom: 16,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.SATELLITE
}
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title:"F.E. Wood & Sons - Natural Energy"
});
Run Code Online (Sandbox Code Playgroud)
现在,如果我可以获得具有LatLng(....)输入的行,我可以使用一些字符串解析操作来导出所有URL的纬度和经度值.
我写了以下代码来获取我的数据:
require(rvest)
require(magrittr)
fetchLatLong<-function(url){
url<-as.character(url)
solNum<-html(url)%>%
html_nodes("#map_canvas")%>%
html_attr("script")
}
Run Code Online (Sandbox Code Playgroud)
(使用selectorGadget找到"map_canvas"选择器;您可以在此处查看整个源).
我有最糟糕的时间来阅读我所追求的内容.我尝试了很多节点和节点组合,但无济于事.我玩过phantom.js,但问题是它不是js渲染的html内容我正在追求:我正在寻找API查询输入,它被写入页面代码(或者,至少,我的业余眼睛似乎是).
有人有建议吗?
我正在抓一个网站,并从for-loop调用我的抓取功能.在循环的4,000次迭代中,我的计算机警告我RStudio使用了太多的内存.但是在使用转义键断开循环之后,我在R环境中看不到任何大对象.
我尝试了这两个 帖子的提示,但他们没有透露原因.当我mem_used()从pryr包裹打电话时,我得到:
2.3 GB
这与Windows任务管理员最初所说的一致.它表示2.3 GB,然后在循环结束后十分钟内降至1.7 GB,在循环后二十分钟内降至1.2 GB. mem_used()继续说2.3 GB.
但根据lsos()上面链接的第一篇文章中的函数,我的R对象很小:
> lsos()
Type Size Rows Columns
all_raw tbl_df 17390736 89485 12
all_clean tbl_df 14693336 89485 15
all_no_PAVs tbl_df 14180576 86050 15
all_no_dupe_names tbl_df 13346256 79646 15
sample_in tbl_df 1917128 9240 15
testdat tbl_df 1188152 5402 15
username_res tbl_df 792936 4091 14
getUserName function 151992 NA NA
dupe_names tbl_df 132040 2802 3
time_per_iteration numeric 65408 4073 NA
Run Code Online (Sandbox Code Playgroud)
这说我最大的对象是17 MB,不接近2.3 GB.我怎样才能找到内存使用的罪魁祸首并修复它?循环中是否存在逐渐占用内存的东西? …
我正在测试R中的一些web scrape脚本.我已经阅读了很多教程,文档并尝试了不同的东西,但到目前为止还没有成功.
我试图抓取的URL就是这个.它有公共,政府数据,没有针对网络抓取工具的声明.它是葡萄牙语,但我相信这不会是一个大问题.
它显示了一个包含多个字段的搜索表单.我的测试是搜索来自特定州("RJ",在这种情况下,该字段是"UF")和城市("Rio de Janeiro",在"MUNICIPIO"字段中)的数据.通过单击"Pesquisar"(搜索),它显示以下输出:
使用Firebug,我发现它调用的URL(使用上面的参数)是:
http://www.dataescolabrasil.inep.gov.br/dataEscolaBrasil/home.seam?buscaForm=buscaForm&codEntidadeDecorate%3AcodEntidadeInput=&noEntidadeDecorate%3AnoEntidadeInput=&descEnderecoDecorate%3AdescEnderecoInput=&estadoDecorate%3A**estadoSelect=33**&municipioDecorate%3A**municipioSelect=3304557**&bairroDecorate%3AbairroInput=&pesquisar.x=42&pesquisar.y=16&javax.faces.ViewState=j_id10
Run Code Online (Sandbox Code Playgroud)
该网站使用jsessionid,使用以下内容可以看到:
library(rvest)
library(httr)
url <- GET("http://www.dataescolabrasil.inep.gov.br/dataEscolaBrasil/")
cookies(url)
Run Code Online (Sandbox Code Playgroud)
知道它使用了jsessionid,我使用cookies(url)检查这些信息,并将其用于这样的新URL:
url <- read_html("http://www.dataescolabrasil.inep.gov.br/dataEscolaBrasil/home.seam;jsessionid=008142964577DBEC622E6D0C8AF2F034?buscaForm=buscaForm&codEntidadeDecorate%3AcodEntidadeInput=33108064&noEntidadeDecorate%3AnoEntidadeInput=&descEnderecoDecorate%3AdescEnderecoInput=&estadoDecorate%3AestadoSelect=org.jboss.seam.ui.NoSelectionConverter.noSelectionValue&bairroDecorate%3AbairroInput=&pesquisar.x=65&pesquisar.y=8&javax.faces.ViewState=j_id2")
html_text(url)
Run Code Online (Sandbox Code Playgroud)
好吧,输出没有数据.实际上,它有一条错误消息.翻译成英文,它基本上说会话已经过期.
我认为这是一个基本的错误,但我四处寻找并找不到克服这个问题的方法.
我正试图用Rvest从$ JOB的内部网页上刮掉一张桌子.我已经使用这里列出的方法来获取xpath等.
我的代码非常简单:
library(httr)
library(rvest)
un = "username"; pw = "password"
thexpath <- "//*[@id="theFormOnThePage"]/fieldset/table"
url1 <- "https://biglonghairyURL.do?blah=yadda"
stuff1 <- read_html(url1, authenticate(un, pw))
Run Code Online (Sandbox Code Playgroud)
这给我一个错误:"对等证书无法使用给定的CA证书进行身份验证."
撇开不向上到datedness证书的,我已经看到,它可能使用HTTR避免SSL验证使用set_config(config(ssl_verifypeer = 0L)).
如果我使用来自httr的GET(url1),这只会很好用,但重点是使用rvest自动抓取表格.
看看Rvest和httr的PDF ,似乎Rvest调用httr传递curl命令,而在httr中,你可以使用config().
那么,要完成三段论,我怎么能(或者甚至可能?)直接通过rvest :: read_html传递ssl_verifypeer = 0L?
我尝试了很多变化:
stuff1 <- read_html(url1, authenticate(un, pw), ssl_verifypeer = 0L))
stuff1 <- read_html(url1, authenticate(un, pw), config(ssl_verifypeer = 0L)))
stuff1 <- with_config(config = config(ssl_verifypeer = 0L), read_html(url1, authenticate(un, pw)))
Run Code Online (Sandbox Code Playgroud)
并且所有这些都抛出相同的错误"对等证书无法使用给定的CA证书进行身份验证".
希望这是可能的,我只是没有把正确的语法放在一起?
有人建议使用RSelenium,但由于这是在受保护的VM中,安装java和/或新软件包需要采取国会行为(以及VP签收),这将是我的最后手段.
我非常感谢任何有关这方面的建议.
我正试图从这个网站上删除电话号码:http://olx.pl/oferta/pokoj-1-os-bielany-encyklopedyczna-CID3-IDdX6wf.html#c1c0e14c53.可以使用rvest带选择器的包来抓取电话号码.\'id_raw\'\::nth-child(1) span+ div strong(由selectorGadget建议).
问题是在点击掩码后可以获得信息.所以我不得不打开一个会话,提供一个点击,然后抓取信息.
编辑顺便说一下,它不是一个链接imho.看看来源.我有一个问题,因为我是一个普通的R用户,而不是一个javascript程序员.
我正在使用rvest来提取下一页中的表格:
https://en.wikipedia.org/wiki/List_of_United_States_presidential_elections_by_popular_vote_margin
以下代码有效:
URL <- 'https://en.wikipedia.org/wiki/List_of_United_States_presidential_elections_by_popular_vote_margin'
table <- URL %>%
read_html %>%
html_nodes("table") %>%
.[[2]] %>%
html_table(trim=TRUE)
Run Code Online (Sandbox Code Playgroud)
但是边缘和总统名称的列有一些奇怪的价值.原因是源代码具有以下内容:
<td><span style="display:none">00.001</span>?10.44%</td>
Run Code Online (Sandbox Code Playgroud)
所以不是得到-10.44%而是得到00.001'10.44%
我怎么能解决这个问题?
一个简单的问题:此代码x <- read_html(url)挂起并读取页面无数秒。我不知道如何处理此问题,例如,通过设置一些最大响应时间。我可以使用try,catch和任何重试方法。但这只是挂起,没有任何反应。有人知道如何处理吗?
页面没有问题,有时会发生,而当我手动重试时,它会起作用。
我想获取此页面上列出的atm的链接:https : //coinatmradar.com/city/345/bitcoin-atm-birmingham-uk/
我需要对页面底部的“加载更多”按钮做些什么?
我一直在使用选择器工具,可以下载chrome来选择CSS路径。
我写了下面的代码块,它似乎只检索前十个链接。
library(rvest)
base <- "https://coinatmradar.com/city/345/bitcoin-atm-birmingham-uk/"
base_read <- read_html(base)
atm_urls <- html_nodes(base_read, ".place > a")
all_urls_final <- html_attr(atm_urls, "href" )
print(all_urls_final)
Run Code Online (Sandbox Code Playgroud)
我希望能够检索到该区域中列出的atm的所有链接,但是我的R代码尚未这样做。
任何帮助都会很棒。抱歉,这是一个非常简单的问题。
之前在此页面上发布了有关在 PGA 网站的排行榜页面上抓取表格的相关 stackoverflow 问题。总结那篇文章,由于该页面使用 javascript 呈现页面和表格的方式,排行榜显然难以抓取。
我可以检查并在标签中看到有一个global.leaderboardConfig包含有用信息的对象:
是否可以将此对象作为 R 中的列表获取?我能够使用 获取页面上的所有 76 个脚本元素xml2::read_html('https://www.pgatour.com/leaderboard.html') %>% html_nodes('script'),但是我不确定如何识别所需的特定脚本标记,也不知道如何从中获取对象。
编辑:在 devtools 的网络选项卡中,还有这个请求提供获取数据的 API 调用的链接。与从脚本标签中获取对象相比,获取所有网络请求并筛选这些请求是否更容易?
r ×10
rvest ×10
web-scraping ×6
httr ×2
javascript ×2
curl ×1
html-table ×1
memory ×1
scraper ×1
ssl ×1
timeout ×1
xml2 ×1