我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).但这似乎很多工作(我计划在不同的部分这样做).应该有一个程序化的工作.
任何暗示都是受欢迎的!
我有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) 我有这些数据:(完成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"
我希望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) 我正在尝试在我的模型'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) 这个页面的主菜单(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) 我已经读过这个并创建了一个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) 我正在关注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) 我有一个秘鲁的 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) 我有一个没有右边距的情节图(底部都没有)。找不到添加此额外空间的文档,因此我的 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 ×7
django ×2
django-forms ×1
dplyr ×1
filter ×1
geojson ×1
ggvis ×1
inheritance ×1
plotly ×1
r-plotly ×1
rselenium ×1
rvest ×1
subset ×1
web-scraping ×1