小编use*_*er1的帖子

使用VBA访问iframe中的对象

要点:

我已成功使用VBA执行以下操作:

  • 使用getElementsByName登录网站

  • 选择将生成的报告的参数(使用getelementsby ...)

  • 选择参数后生成报告,这些参数将生成的数据集呈现在同一页面上的iframe中

需要注意的重要事项 - 该网站是客户端的

以上是简单的部分,困难的部分如下:

单击iframe中将数据集导出到csv的gif图像

我尝试过以下方法:

Dim idoc As HTMLDocument
Dim iframe As HTMLFrameElement
Dim iframe2 As HTMLDocument

Set idoc = objIE.document
Set iframe = idoc.all("iframename")
Set iframe2 = iframe.contentDocument

    Do Until InStr(1, objIE.document.all("iframename").contentDocument.innerHTML, "img.gif", vbTextCompare) = 0
        DoEvents
    Loop
Run Code Online (Sandbox Code Playgroud)

为上面的逻辑提供一些背景 -

  • 我访问了主框架
  • 我通过其名称元素访问iframe
  • 我访问了iframe中的内容
  • 我试图找到需要点击导出到csv的gif图像

正是在这条线上它说"对象不支持这个属性或方法"

还尝试通过a元素和href属性访问iframe gif,但这完全失败了.我也尝试从其源URL抓取图像,但所有这一切都将我带到图像所在的页面.

注意:iframe没有ID,奇怪的是gif图像没有"onclick"元素/事件

最后的考虑 - 尝试使用R来抓取iframe

访问iframe的HTML节点很简单,但是尝试访问iframe的属性,随后表的节点被证明是不成功的.它返回的只是"Character(0)"

library(rvest)
library(magrittr)

Blah <-read_html("web address redacted") %>%
  html_nodes("#iframe")%>%
  html_nodes("#img")%>%
  html_attr("#src")%>%
  #read_html()%>%
  head()
Blah
Run Code Online (Sandbox Code Playgroud)

只要ai包含read_html,脚本就会返回以下错误:

if(grepl("<|>",x)){:参数的长度为零时出错

我怀疑这是指字符(0)

感谢这里的任何指导!

非常感谢,

HTML

<div …
Run Code Online (Sandbox Code Playgroud)

html excel iframe vba web-scraping

8
推荐指数
1
解决办法
9721
查看次数

如何在R中使用OSRM绘制多个等时线多边形?

我已成功设法使用此示例帖子在R中重新创建驱动时间多边形

上面的帖子只涉及一个带有等时线的单个多边形

问题 - 我想在5个不同的地图点上绘制多个驾驶时间多边形

通过创建5个单独的等时线,然后在我的Leaflet Map中添加5个多边形,我设法以非常费力的方式完成了这项工作.

#Preparing multiple dependancies----
packages <- c("readxl","dplyr","leaflet","htmltools", "sp", "osrm")
install.packages(packages)
lapply(packages, library,character.only=TRUE)

###

#Loading in Locations----
Location <- read_excel("filepath.xlsx", sheet=1)

###

#Extract Lon and Lat and create spatial dataframe
xy <- Location[, c(3,4)]

spatialdf <- SpatialPointsDataFrame(coords = xy, data = Location, proj4string = CRS("+proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0"))
class(spatialdf)

#Create Isochrone points
iso1 <- osrmIsochrone(loc = c(-2.3827439,53.425705), breaks = seq(from = 0, to = 60, by = 5))
iso2 <- osrmIsochrone(loc = c(-0.85074928,51.325871), …
Run Code Online (Sandbox Code Playgroud)

maps r osrm

7
推荐指数
1
解决办法
762
查看次数

如何在传单Map R上创建一个等值线

问题

我加载了英国的shapefile,没问题.让我们称呼它FILE1.我还有一个包含2列的数据框文件:经度,纬度.我打电话给这个FILE2.我试图绘制FILE2shapefile地图上的坐标FILE1并创建一个等值区域图

我也收到以下错误:

polygonData.default(data)出错:不知道如何从类tbl_df的对象获取路径数据

我从这个问题中得到了代码:Choropleth使用传单包在R中进行映射 并对其进行调整以适合我的数据

#Plot the Leaflet map----
mymap <- leaflet() %>% 
  addProviderTiles("OpenStreetMap.Mapnik") %>%
  addPolygons(data = coords, #This is data frame of U.K long and lat
              fillColor = ~palette(file$TotalByPostcode), 
              fillOpacity = 0.6,       
              color = "darkgrey",      
              weight = 1.5,            
              popup = popup1)%>%
  addLegend(position = 'topleft', 
            colors = c('#fee0d2',
                       '#fcbba1',
                       '#fc9272',
                       '#fb6a4a',
                       '#ef3b2c',
                       '#cb181d',
                       '#a50f15',
                       '#67000d'), 
            labels = c('0',"","","","","","",'100'), 
            opacity = 0.6,      
            title = "Totals") 

print(map)
Run Code Online (Sandbox Code Playgroud)

这是我的数据框:

数据框

r leaflet choropleth

0
推荐指数
1
解决办法
2231
查看次数

标签 统计

r ×2

choropleth ×1

excel ×1

html ×1

iframe ×1

leaflet ×1

maps ×1

osrm ×1

vba ×1

web-scraping ×1