小编Oma*_*les的帖子

R:rvest:抓取动态电子商务页面

rvest在R中用来做一些刮擦.我知道一些HTML和CSS.

我想获得URI的每个产品的价格:

http://www.linio.com.co/tecnologia/celulares-telefonia-gps/

当您在页面上下载时,新项目会加载(当您进行一些滚动时).

到目前为止我做了什么:

Linio_Celulares <- html("http://www.linio.com.co/celulares-telefonia-gps/")

Linio_Celulares %>%
  html_nodes(".product-itm-price-new") %>%
  html_text()
Run Code Online (Sandbox Code Playgroud)

我得到了我需要的东西,但仅仅是25个第一个元素(默认加载).

 [1] "$ 1.999.900" "$ 1.999.900" "$ 1.999.900" "$ 2.299.900" "$ 2.279.900"
 [6] "$ 2.279.900" "$ 1.159.900" "$ 1.749.900" "$ 1.879.900" "$ 189.900"  
[11] "$ 2.299.900" "$ 2.499.900" "$ 2.499.900" "$ 2.799.000" "$ 529.900"  
[16] "$ 2.699.900" "$ 2.149.900" "$ 189.900"   "$ 2.549.900" "$ 1.395.900"
[21] "$ 249.900"   "$ 41.900"    "$ 319.900"   "$ 149.900" 
Run Code Online (Sandbox Code Playgroud)

问题:如何获取此动态部分的所有元素?

我想,我可以滚动页面,直到所有元素都被加载,然后使用html(URL).但这似乎很多工作(我计划在不同的部分这样做).应该有一个程序化的工作.

任何暗示都是受欢迎的!

r web-scraping infinite-scroll rvest

21
推荐指数
1
解决办法
9494
查看次数

R:具有不同列名的rbind数据帧

我有12个数据帧,每个包含6列:5个具有相同的名称,1个是不同的.然后,当我调用rbind()时,我得到:

Error in match.names(clabs, names(xi)) : 
  names do not match previous names
Run Code Online (Sandbox Code Playgroud)

不同的列是:"goal1Completions".有12个目标完成......它们是:"goal1Completions","goal2Completions","goal3Completions"......等等.

我能想到的最好方法是:将每个数据框中的每一列重命名为"GoalsCompletions",然后使用"rbind()".

有简单的方法吗?

看看谷歌我发现这个包:" gtools ".它有一个叫做"smartbind"的函数.但是,在使用smartbind()后我想看到带有"View()"的数据框,我的R会话崩溃了......

我的数据(第一个数据框的示例):

       date      source     medium   campaign   goal1Completions    ad.cost           Goal
1   2014-10-01  (direct)    (none)   (not set)          0           0.0000            Vida
2   2014-10-01   Master      email     CAFRE            0           0.0000            Vida
3   2014-10-01  apeseg      referral (not set)          0           0.0000            Vida
Run Code Online (Sandbox Code Playgroud)

r

16
推荐指数
3
解决办法
3万
查看次数

R:如何过滤/子集一系列日期

我有这些数据:(完成Dicember)

      date     sessions
1   2014-12-01  1932
2   2014-12-02  1828
3   2014-12-03  2349
4   2014-12-04  8192
5   2014-12-05  3188
6   2014-12-06  3277
Run Code Online (Sandbox Code Playgroud)

并且需要对此进行子菜单/过滤,例如从"2014-12-05"到"2014-12-25"

我现在可以使用运算符":"创建序列.

示例:b < - c(1:5)

但是如何过滤序列?我试过这个

NewDate <- filter(Dates, date("2014-12-05":"2014-12-12"))
Run Code Online (Sandbox Code Playgroud)

但是说:

错误:意外符号:"NewDate < - 过滤器(日期,日期("2014-12-05":"2014-12-12")NewDate"

r subset filter dplyr

10
推荐指数
3
解决办法
5万
查看次数

R:ggvis - 灰色背景(如ggplot2)

我希望ggplot2在Ggvis中的外观和感觉.有没有办法在ggvis中实现这一目标?

在此输入图像描述

我有这个来自ggvis:

在此输入图像描述

注意:
1)不喜欢白色背景(更好的是ggplot2
2中的灰色背景)如您所见,条形图标有黑线.怎么骑呢?

我的代码:

Visitas_Por_Fuente %>%
        ggvis(~Fuentes, ~sessions) %>%
          layer_bars(width = 0.8, fill = ~Fuentes)
Run Code Online (Sandbox Code Playgroud)

我的数据:

    as.data.frame(structure(list(date = structure(c(1417410000, 1417410000, 1417410000, 
1417410000, 1417410000, 1417410000, 1417496400, 1417496400, 1417496400, 
1417496400, 1417496400, 1417496400, 1417496400, 1417582800, 1417582800, 
1417582800, 1417582800, 1417582800, 1417582800, 1417582800, 1417669200, 
1417669200, 1417669200, 1417669200, 1417669200, 1417669200, 1417669200, 
1417755600, 1417755600, 1417755600, 1417755600, 1417755600, 1417755600, 
1417842000, 1417842000, 1417842000, 1417842000, 1417842000, 1417842000, 
1417842000, 1417928400, 1417928400, 1417928400, 1417928400, 1417928400, 
1417928400, 1417928400, 1418014800, 1418014800, 1418014800, 1418014800, 
1418014800, 1418014800, 1418014800, 1418101200, 1418101200, 1418101200, 
1418101200, 1418101200, 1418101200, …
Run Code Online (Sandbox Code Playgroud)

r ggvis

10
推荐指数
1
解决办法
857
查看次数

Django:将继承(嵌套)值渲染为forms.ModelForm中的列表

我正在尝试在我的模型'TipoDocumento'中显示我的表单中的下拉列表(我需要将列'nombre_corto'显示为列表).

1)我的模型名称是"Cocinera",Cocinera继承了我的模型"Usuario".
2)"Usuario"从我的模型"Documento"继承了它的'documento'字段.
3)"Documento"模型从"TipoDocumento"继承了它的'tipo_documento'字段.

但我无法通过我的'Cocinera'模型通过我的'CocineraForm'形式将'tipo_documento'作为列表呈现出来.我得到一个错误,最后详细说明.

我所有的模特都在'核'应用程序.只有渲染的表单才能出现在我的其他应用"app_administrador"中.

================================

Nucleo - 该应用程序刚刚命名为nucleo

================================

楷模:

型号'TipoDocumento'

from django.db import models

class TipoDocumento(models.Model):
        nombre_corto = models.CharField(blank=False, null=False, max_length=25)
        nombre_largo = models.CharField(blank=False, null=False, max_length=100)

    def __str__(self):
        return self.nombre_corto
Run Code Online (Sandbox Code Playgroud)

模型'Documento'

class Documento(models.Model):

    def __str__(self):
        return self.codigo

    tipo_documento = models.ForeignKey(TipoDocumento, on_delete=models.SET_NULL, null=True)
    codigo = models.CharField(max_length=25)
Run Code Online (Sandbox Code Playgroud)

型号'Usuario':

class Usuario(models.Model):
    class Meta:
        abstract = True

    nombre = models.CharField(blank=False, null=False, max_length=200)
    apellido_paterno = models.CharField(blank=False, null=False, max_length=100)
    apellido_materno = models.CharField(blank=True, null=False, max_length=100)
    fecha_de_nacimiento = models.DateField(blank=False, null=False)
    documento = models.OneToOneField(Documento, on_delete=models.CASCADE, blank=False, …
Run Code Online (Sandbox Code Playgroud)

django inheritance django-forms

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

RSelenium:单击不可见对象 - ElementNotVisibleException

这个页面的主菜单(linio)有11个链接.只对9感兴趣(灰色背景和显示子菜单时).

我想从9个选项中单击子菜单中的每个元素.期望的过程是:

1.-第一部分:"Celulares y Tablets".
2.-转到:"Celulares y智能手机".请单击并查看此页面.
3.-提取一些数据(选中,我已经能够这样做了).

4.-转到"Celulares y Tablets"中的下一个子菜单.其中:"Accesorios Celular".

5.-提取一些数据,然后转到下一个子菜单.完成本节中的所有子菜单后,我将进入下一个大部分:"TV-Audio-y-Foto".

等9个部分.

HTML结构

查看源代码,我已经到了这个:

1.-主标题:主标题位于'nav'标记内:

<nav id="headerMainMenu>
Run Code Online (Sandbox Code Playgroud)

2.-'nav'标签内部是'ul',内部的每个'il'对于9个部分中的每一个都有'id'和'id':

<nav id="headerMainMenu>
    <ul>
         <il id = "category-item-celulares-y-tablets"><a href="..."></il>
         <il id = "category-item-celulares-y-tablets"><a href="..."></il>
         <il id = "category-item-celulares-y-tablets"><a href="..."></il>
    </ul>
</nav>
Run Code Online (Sandbox Code Playgroud)

3.-在il元素中,有div元素包含我们需要的链接:请注意<a>使用class ="subnav__title".

<nav id="headerMainMenu>
    <ul>
         <il id = "category-item-celulares-y-tablets"><a href="...">
             <div class="col-3">
               <a href="..."class="subnav__title">TV y Video</a>
         </il>
         <il id = "category-item-celulares-y-tablets"><a href="..."></il>
         <il id = "category-item-celulares-y-tablets"><a href="..."></il>
    </ul>
</nav>
Run Code Online (Sandbox Code Playgroud)

4.-使用RSelenium转到每个部分:

library(RSelenium)
library(rvest)
#start RSelenium
checkForServer()

startServer() …
Run Code Online (Sandbox Code Playgroud)

rselenium

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

R:使用lapply将新列添加到数据框列表中

我已经读过这个并创建了一个lapply函数来为列表中的每个数据帧添加一个"SubCat"列.

这是我的代码:

    my_list <- lapply(1:length(my_list),     
               function(i) cbind(my_list[[i]], my_list[[i]]["SubCat"] <- as.character(""))) 
Run Code Online (Sandbox Code Playgroud)

但得到这个错误:

Error in `[<-.data.frame`(`*tmp*`, "SubCat", value = "") : 
  replacement has 1 row, data has 0 
Run Code Online (Sandbox Code Playgroud)

怎么了?

当我使用它时,它在一个数据框架上工作:

my_list[[1]]["SubCat"] <- as.character("")
Run Code Online (Sandbox Code Playgroud)

更新:

这些是我的数据框的示例,它们都包含相同的结构.SKU的一列和类别的一列.

DataFrame 1:

    row.names       SKU         Tv.y.Video
1   1699        2018143169254P  Tv.y.Video
2   1700        2018143169254   Tv.y.Video
3   1946        2018144678120P  Tv.y.Video
4   1947        2018144678120   Tv.y.Video
5   2366        2018146411831P  Tv.y.Video
6   2367        2018146411831   Tv.y.Video
Run Code Online (Sandbox Code Playgroud)

DataFrame 2:

    row.names   SKU             C?mputo
1     6       2004121460000P    C?mputo
2     7       2004121460000     C?mputo
3     8       2004121440002P …
Run Code Online (Sandbox Code Playgroud)

r

6
推荐指数
1
解决办法
1万
查看次数

Django:TemplateDoesNotExist 位于 /accounts/login/

我正在关注Mozilla.org 的本教程

设置您的身份验证视图

我在这部分遇到了问题:

下一步是在搜索路径上创建一个注册目录,然后添加 login.html 文件。

因为我已经创建了该目录和模板,但我的应用程序似乎无法识别它。

结构:

Note: Your folder structure should now look like the below:
locallibrary (Django project folder)
   |_catalog
   |_locallibrary
   |_templates (new)
                |_registration
Run Code Online (Sandbox Code Playgroud)

我的结构:

在此处输入图片说明

然后对于这部分:

使这些目录对模板加载程序可见

我有:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        #'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'DIRS': ['./templates',],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]
Run Code Online (Sandbox Code Playgroud)

项目 url.pý:

from django.contrib import admin
from django.urls import path, include
from main_app import views



urlpatterns = [
    path('accounts/', include('django.contrib.auth.urls')),
    path('admin/', …
Run Code Online (Sandbox Code Playgroud)

django

6
推荐指数
1
解决办法
1万
查看次数

R:从 GeoJson 到 DataFrame?

我有一个秘鲁的 GeoJson 文件,它是州(西班牙语为 Departamentos)。

我可以使用传单绘制秘鲁的州,但由于 GeoJson 文件没有我需要的所有数据,我正在考虑将其转换为 data.frame 添加我需要的数据列,然后将其返回到 GeoJson 格式进行绘图。

数据:您可以从这里下载秘鲁的 GeoJson 数据:

这是我正在使用的数据,我需要将它添加到一个销售列,每个州都有一行(“NOMBDEP” - 总共 24 个)

library(leaflet)
library(jsonlite)
library(dplyr)


states <- geojsonio::geojson_read("https://raw.githubusercontent.com/juaneladio/peru-geojson/master/peru_departamental_simple.geojson", what = "sp")
Run Code Online (Sandbox Code Playgroud)

我想使用“jsonlite”包将“GeoJson”转换为数据框,但收到此错误:

library(jsonlite)

states <- fromJSON(states)

Error: Argument 'txt' must be a JSON string, URL or file.
Run Code Online (Sandbox Code Playgroud)

我期待在拥有数据框后,我可以执行以下操作:

states$sales #sales is a vector with the sales for every department

states <- toJson(states)
Run Code Online (Sandbox Code Playgroud)

r geojson

5
推荐指数
2
解决办法
1944
查看次数

R. plotly - Shinyapp 内部图形的填充或边距?

我有一个没有右边距的情节图(底部都没有)。找不到添加此额外空间的文档,因此我的 y 轴(此图处于水平模式)不会被剪切。

用户界面:

tabItem(tabName = "ga",        
            column(12, offset = 2,
            plotlyOutput("plot")
            )         
    )
Run Code Online (Sandbox Code Playgroud)

服务器.R:

  sesiones_por_fuente <- reactive({ 


    sesiones_ga <- read_csv("https://www.dropbox.com/s/w2ggnb0p4mz2nus/sesiones-2018.csv?dl=1", skip = 0)

    sesiones_ga <- sesiones_ga %>%
                  group_by(sources) %>%
                  summarise(sessions = sum(sessions))


  })



  m <- list(
    l = 200,
    r = 50,
    b = 100,
    t = 100,
    pad = 20
  )


  output$plot <- renderPlotly({
    plot_ly(sesiones_por_fuente(), x = ~sessions, y = ~sources, type = 'bar',
            width = 1200, height = 600, margin = m, orientation = 'h', pad=4) %>% …
Run Code Online (Sandbox Code Playgroud)

r plotly r-plotly

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