小编Mis*_*lav的帖子

当rvest无法识别提交按钮时提交POST表单

我想提交以下表格(点击链接"Kliknite na ..."后出现的表格):http://www1.biznet.hr/HgkWeb/do/extlogon

我必须输入一个名为"OIB"的参数,然后单击"Trazi"提交表单.

这是我的代码:

library(httr)
library(rvest)

sess <- html_session("http://www1.biznet.hr/HgkWeb/do/extlogon")
search_page <- sess %>%
  follow_link(1)
form <- html_form(search_page)[[6]]
fill_form <- set_values(form, 'clanica.cla_oib' = '94989605030')
firma_i <- submit_form(search_page, fill_form, submit = 'submit')
Run Code Online (Sandbox Code Playgroud)

最后一行产生错误:

错误:未知提交名称"提交".可能的值:clanica.asTextDatumGasenjaTo,clanica.asTextUdr_id

我不明白为什么rvest在不包含提交名称或类型时将这两个参数识别为提交按钮.为什么rvest不认识提交按钮"Trazi"作为提交参数?简而言之,如何更改填充表单以执行表单?

r httr rvest

12
推荐指数
1
解决办法
374
查看次数

在Azure批处理上运行Selenium并行测试

我在Windows 7上使用R的最新版本.

我想用RSelenium这样的方法并行运行很多测试,我的问题是:

  • 推荐多种RSelenium测试的方法是什么?

假设我想进行1000次测试,每步需要1小时.逐个运行测试需要花费很多时间(每天24次测试,因此总共需要42天).我知道如何使用doParallel和foreach包在我的机器上并行运行测试:并行运行RSelenium,但有时,这还不够.我想并行运行大约100个测试.我尝试使用Azure Batch,但在启动selenium服务器时在某些节点上遇到很多错误.

更具体地说,我写了dockerfile:

FROM rocker/r-base:latest 

RUN  apt-get update \
  && apt-get install -y --no-install-recommends \
   libxml2-dev \
   libcurl4-openssl-dev \
   libssl-dev \
   gnupg2 \
   libfftw3-dev \
   libtiff-dev \
   libx11-dev \
   libcairo2-dev \
   libxt-dev \
   firefox

#RUN add-apt-repository -y ppa:mozillateam/firefox-next

## Install Java 
RUN echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main" \ 
        | tee /etc/apt/sources.list.d/webupd8team-java.list \ 
    && echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main" \ 
        | tee -a /etc/apt/sources.list.d/webupd8team-java.list \ 
    && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys …
Run Code Online (Sandbox Code Playgroud)

foreach selenium r rselenium azure-batch

12
推荐指数
1
解决办法
296
查看次数

使用带有g-recaptcha-response参数的POST提交表单

我想从以下网页提交表格:http://www.hzzo-net.hr/statos_OIB.htm

首先,我使用2captcha服务绕过recaptcha:

# parameters
api_key <- "c+++"
api_url <- "http://2captcha.com/in.php"
site_key <- "6Lc3SAgUAAAAALFnYxUbXlcJ8I9grvAPC6LFTKQs"
hzzo_url <- "http://www.hzzo-net.hr/statos_OIB.htm"

# GET method
req_url <- paste0("http://2captcha.com/in.php?key=", api_key,"&method=userrecaptcha&googlekey=", 
                  site_key, "&pageurl=", hzzo_url)
get_response <- POST(req_url)
hzzo_content <- content(get_response)
hzzo_content <- xml_text(hzzo_content)
captcha_id <- stringr::str_extract_all(hzzo_content[[1]], "\\d+")[[1]]

# solve captcha
Sys.sleep(16L)
captcha2_solve <- function(apiKey, capstchaID){
  req_url <- paste0("http://2captcha.com/res.php?key=", api_key,"&action=get&id=", capstchaID)
  result <- GET(req_url)
  captcha_content <- content(result)
  hzzo_response <- xml_text(captcha_content)
  hzzo_response <- strsplit(hzzo_response, "\\|")
  return(hzzo_response)
  # hzzo_response <- hzzo_response[[1]][[2]]
  # return(hzzo_response)
}
hzzo_response <- captcha2_solve(api_key, captcha_id) …
Run Code Online (Sandbox Code Playgroud)

python r recaptcha httr 2captcha

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

LSTM 0 准确率

我训练了 LSTM 分类模型,但得到了奇怪的结果(0 准确率)。这是我的带有预处理步骤的数据集:

import pandas as pd
from sklearn.model_selection import train_test_split
import tensorflow as tf
from tensorflow import keras
import numpy as np

url = 'https://raw.githubusercontent.com/MislavSag/trademl/master/trademl/modeling/random_forest/X_TEST.csv'
X_TEST = pd.read_csv(url, sep=',')
url = 'https://raw.githubusercontent.com/MislavSag/trademl/master/trademl/modeling/random_forest/labeling_info_TEST.csv'
labeling_info_TEST = pd.read_csv(url, sep=',')


# TRAIN TEST SPLIT
X_train, X_test, y_train, y_test = train_test_split(
    X_TEST.drop(columns=['close_orig']), labeling_info_TEST['bin'],
    test_size=0.10, shuffle=False, stratify=None)


### PREPARE LSTM
x = X_train['close'].values.reshape(-1, 1)
y = y_train.values.reshape(-1, 1)
x_test = X_test['close'].values.reshape(-1, 1)
y_test = y_test.values.reshape(-1, 1)
train_val_index_split = 0.75
train_generator = keras.preprocessing.sequence.TimeseriesGenerator(
    data=x,
    targets=y, …
Run Code Online (Sandbox Code Playgroud)

python classification lstm keras

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

当轴 = 0 时,熊猫并行应用

我想在所有 Pandas 列上并行应用一些函数。例如,我想并行执行此操作:

def my_sum(x, a):
    return x + a


df = pd.DataFrame({'num_legs': [2, 4, 8, 0],
                   'num_wings': [2, 0, 0, 0]})
df.apply(lambda x: my_sum(x, 2), axis=0)
Run Code Online (Sandbox Code Playgroud)

我知道有一个swifter包,但它不支持axis=0应用:

NotImplementedError:Swifter 无法在大型数据集上执行 axis=0 应用。Dask 目前没有实现 axis=0 应用。更多详情请访问https://github.com/jmcarpenter2/swifter/issues/10

Dask 也不支持此功能axis=0(根据swifter 中的文档)。

我用谷歌搜索了几个来源,但找不到简单的解决方案。

不敢相信这在熊猫中如此复杂。

python parallel-processing pandas python-multiprocessing

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

使用dplyr或datatable每年的公司数量

让我们说我有数据框:

df <- data.frame(City = c("NY", "NY", "NY", "NY", "NY", "LA", "LA", "LA", "LA"),
                 YearFrom = c("2001", "2003", "2002", "2006", "2008", "2004", "2005", "2005", "2002"),
                 YearTo = c(NA, "2005", NA, NA, "2009", NA, "2008", NA, NA))
Run Code Online (Sandbox Code Playgroud)

其中YearFrom是例如公司成立的年份,YearTo是取消的年份.如果YearTo是NA,那么它仍在工作.

我想计算每年的公司数量.

该表应如下所示

City    |"Year"   |"Count"
"NY"    |2001       1
"NY"    |2002       2
"NY"    |2003       3
"NY"    |2004       3
"NY"    |2005       2
"NY"    |2006       3
"NY"    |2007       3
"NY"    |2008       4
"NY"    |2009       3
"LA"    |2001       0
"LA"    |2002       1
"LA"    |2003       1
"LA"    |2004 …
Run Code Online (Sandbox Code Playgroud)

r data-manipulation dplyr data.table

6
推荐指数
3
解决办法
232
查看次数

R中的错误:需要h5py Python包来保存和加载模型

我使用的是R 3.4.2.我正在关注包中的例子decryptr

library(decryptr)

# Download captchas
captcha <- download_tjmg(dest = 'img')
keras_tjmg <- decryptrModels::read_model('tjmg')
Run Code Online (Sandbox Code Playgroud)

最后一行代码产生错误

Error in keras::load_model_hdf5(file_path) : 
  The h5py Python package is required to save and load models
Run Code Online (Sandbox Code Playgroud)

我试图从终端重新安装h5py包.我也安装了keras包.我可以在pyrthon中导入h5py包,但Rstudio不知道它以某种方式识别它.

python r h5py rstudio

5
推荐指数
1
解决办法
2215
查看次数

从R或python运行yaml文件进行并行selenium测试

我有一个简单的yaml文件:

seleniumhub:
    image: selenium/hub
    ports:
      - 4444:4444

firefoxnode:
    image: selenium/node-firefox-debug
    ports:
      - 4577
    links:
      - seleniumhub:hub

chromenode:
    image: selenium/node-chrome-debug
    ports:
      - 4578
    links:
      - seleniumhub:hub
Run Code Online (Sandbox Code Playgroud)

我在docker中执行过:

docker-compose up -d
Run Code Online (Sandbox Code Playgroud)

我有一个集线器和两个节点在运行.

现在我想并行运行两个非常简单的selenium命令(用RSelenium编写):

remDr$open()
remDr$navigate("http://www.r-project.org")
remDr$screenshot(display = TRUE)
Run Code Online (Sandbox Code Playgroud)

我想知道如何在Python或R中并行运行selenium命令.我尝试了几种方法但没有效果.例如在R中:

library(RSelenium)
remDr <- remoteDriver(remoteServerAddr = "192.168.99.100", port = 4444L)
remDr$open()
remDr$navigate("http://www.r-project.org")
remDr$screenshot(display = TRUE)
Run Code Online (Sandbox Code Playgroud)

什么都不做 我也试过运行两个remoteDrivers,但这对以太没有帮助:

remDr <- remoteDriver(remoteServerAddr = "192.168.99.100", port = 4577L)
remDr$open()
remDr$navigate("http://www.r-project.org")
remDr$screenshot(display = TRUE)
Run Code Online (Sandbox Code Playgroud)

python r selenium-grid docker rselenium

5
推荐指数
0
解决办法
362
查看次数

使用 Rselenium 单击跨域 iframe 元素

我正在使用 R 版本 3.3.2。使用 Rselenium 包,我试图从这个网站上抓取一些数据:http ://www.dziv.hr/en/e-services/on-line-database-search/patents/

我正在使用 Rselenium,我的代码如下所示:

selServ <- RSelenium::startServer(javaargs = c("-Dwebdriver.gecko.driver=\"C:/Users/Mislav/Documents/geckodriver.exe\""))
remDr <- remoteDriver(extraCapabilities = list(marionette = TRUE))
remDr$open()
Sys.sleep(2)

# Simulate browser session and fill out form
remDr$navigate("http://www.dziv.hr/hr/e-usluge/pretrazivanje-baza-podataka/patent/")
Run Code Online (Sandbox Code Playgroud)

这不起作用:

webel <- remDr$findElement(using = "xpath", "/input[@id = 'TB1']")
Run Code Online (Sandbox Code Playgroud)

然后我想使用switchToFrame()函数切换到 iframe ,但是 iframe 不包含 id。

然后我有 tr 使用索引:webel <- remDr$switchToFrame(1) 但这只是返回 NULL

另外,我认识到,iframe 有不同的域。

是否可以从该网站 svrap 数据?

iframe r cross-domain web-scraping rselenium

2
推荐指数
1
解决办法
956
查看次数

在导航栏页面右侧添加操作按钮

我正在使用auth0包进行闪亮的身份验证。该软件包包含auth0::logoutButton(). 我想将这些按钮放在NavbarPageShiny 应用程序的右侧。这是一个简单的应用程序:

library(shiny)
library(markdown)

ui <- navbarPage("Navbar!",
                 tabPanel("Plot",
                          sidebarLayout(
                            sidebarPanel(
                              radioButtons("plotType", "Plot type",
                                           c("Scatter"="p", "Line"="l")
                              )
                            ),
                            mainPanel(
                              plotOutput("plot")
                            )
                          )
                 ),
                 tabPanel("Summary",
                          verbatimTextOutput("summary")
                 )
                 ###

                 # HERE ADD loginButton() in new panel that will be on the right side for test any actionbutton

                 ###
)



server <- function(input, output, session) {
  output$plot <- renderPlot({
    plot(cars, type=input$plotType)
  })

  output$summary <- renderPrint({
    summary(cars)
  })

  output$table <- DT::renderDataTable({
    DT::datatable(cars)
  })
}

shinyApp(ui = ui, server …
Run Code Online (Sandbox Code Playgroud)

r shiny

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