- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
问题:使用 rvest,我似乎无法从通过 phantom js 呈现的 html 页面中找到我需要的信息 block 。我已经尝试了几乎所有可能的格式,但我似乎无法让 html_node 选取正确的 block 。
从幻影渲染的 html:
<div class="page">
<div class="main-header">
</script>
<div id="listing-703036966" class="shop-srp-listings__listing">
<div class="card listing-row--search hide-fade">
<div class="listing-row__main">
<div class="listing-row__image">
<div class="media-count shadowed">
<a href="/vehicledetail/detail/703036966/overview/" target="_self" class="media-count--photo" data-goto-vdp="703036966" data-standard-link="md-thumb">
25 Photos
</a>
<a href="/vehicledetail/detail/703036966/overview/" target="_self" class="media-count--video" data-goto-vdp="703036966" data-standard-link="md-thumb">
1 Video
</a>
</div>
<a href="/vehicledetail/detail/703036966/overview/" target="_self" class="gray-bg listing-row__photo" data-goto-vdp="703036966" data-standard-link="md-thumb">
<img alt="New 2018 BMW 750 i" src="https://www.cstatic-images.com/phototab/e/1/4/e2/f87fb57ec51cab4f57cbaeb9f9f.jpg" onload="window.performance.mark('serverSideFirstPhotoLoaded')">
</a>
<div class="compare-srp">
<div class="listing-row__save">
<a id="703036966" class="switch-favorite unsaved saveVehicleHeart compare-switch-favorite" savedfeatureinstance="" vehicle="{"listingId":703036966,"mkId":20005,"mkNm":"BMW","mdId":20536,"mdNm":"750","trimId":25905,"trimName":"i","modelYearId":35797618,"modelYear":2018,"stkTyp":"New","state":"NC","zipcode":"27107"}" cars-common-omniture-custom="" omniture-events="">
<div class="save-icon-wrapper">
<div class="cui-icon icon-heart-line">
<svg width="16" height="16" class="icon-image">
<use xlink:href="#cui-icon-heart-outline"></use>
</svg>
</div>
<div class="cui-icon icon-heart">
<svg width="16" height="16" class="icon-image">
<use xlink:href="#cui-icon-heart-fill"></use>
</svg>
</div>
</div>
<p class="saved-label">Save</p>
</a>
</div>
<div class="compare-button" data-compare-listing="703036966">
<div class="compare-icon-wrapper">
<div class="cui-icon icon-plus-sign">
<svg width="16" height="16" class="icon-plus-sign">
<use xlink:href="#cui-icon-plus-sign"></use>
</svg>
</div>
<div class="cui-icon icon-checkmark">
<svg width="16" height="16" class="icon-checkmark">
<use xlink:href="#cui-icon-checkmark"></use>
</svg>
</div>
</div>
<p class="compare-button__label compare">Compare</p>
<p class="compare-button__label added">Added</p>
</div>
</div>
</div>
等等
我在 R 中做了什么
library(rvest)
library(stringr)
library(plyr)
library(dplyr)
library(ggvis)
library(knitr)
library(tidyverse)
cars <- read_html("my file.html") %>%
html_nodes("div") %>%
html_text()
但是,当我检查汽车向量时,我完全缺少所需的代码块,即:
<a id="703036966" class="switch-favorite unsaved saveVehicleHeart compare-switch-favorite" savedfeatureinstance="" vehicle=". {"listingId":703036966,"mkId":20005,"mkNm":"BMW","mdId":20536,"mdNm":"750","trimId":25905,"trimName":"i","modelYearId":35797618,"modelYear":2018,"stkTyp":"New","state":"NC","zipcode":"27107"}" cars-common-omniture-custom="" omniture-events="">
但它永远不会转换为可用的形式,并且我尝试的所有不同节点都会丢失它(div、p、span)。
有什么想法吗?
最佳答案
您似乎希望从单个节点解析括号内的内容。即:字符串 "vehicle='{"listingId":703036966,...",来自具有 CSS 路径的节点 "a id.703036966 saveVehicleHeart"。
由于该节点不包含要在 html 浏览器中呈现的文本,因此命令 html_text() 将无济于事。相反,您可以将节点的代码存储为字符串,然后解析感兴趣的部分。
<强>1。检索节点的字符串。节点的几个可能的 CSS 路径之一是 '.saveVehicleHeart'
library(rvest)
library(stringr)
library(dplyr)
car_html <- read_html("my file.html")
cars <- as.character(html_node(car_html, css = '.saveVehicleHeart'))
2.提取括号“{ }”内的内容
cars <- cars %>%
str_match(., "\\{.*?\\}") %>% ## Extract everything between the first "{" and the subsequent "}"
gsub("\\{|\\}", "", .) ## Remove the characters "{" and "}"
<强>3。奖金。将其放入一个漂亮的数据框架中。您没有要求这样做,但它可能会有所帮助。
df_cars <- cars %>%
cbind(read.table(text = ., sep = (','))) %>%
t() %>%
as_data_frame() %>%
.[-1,] %>% ## The first row contains the original unparsed string. We drop it.
separate(., V1, into = c("Variable", "Value"), sep = "\\:")
df_cars
# A tibble: 12 × 2
Variable Value
* <chr> <chr>
1 listingId 703036966
2 mkId 20005
3 mkNm BMW
4 mdId 20536
5 mdNm 750
6 trimId 25905
7 trimName i
8 modelYearId 35797618
9 modelYear 2018
10 stkTyp New
11 state NC
12 zipcode 27107
关于javascript - 将幻影渲染的 HTML 读取到 R 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45495239/
我是 PhantomJS 和 JavaScript 的新手。我的问题很基础,但是却给我带来了很大的困难。 我已成功将可执行文件的 PATH 添加到我的系统变量中,当我在命令提示符中键入“phantom
如何在 PhantomJS 中点击一个元素? page.evaluate(function() { document.getElementById('idButtonSpan').click(
我正在尝试在 Ubuntu 14.04 上安装 TortoiseHg。它运行良好,但试图打开它提示有一个不受支持的 Mercurial 版本(3.4.1)。我通过以下方式删除: sudo apt-ge
我有以下 Node 代码: var express = require('express'); var app = module.exports = express(); var phanto
我从简单开始: hoops=# select * from core_school limit 3; id | school_name | nickname ----+----------
我正在尝试使用phantom-jasmine 。我已经使用 npm 在我的系统(Mountain Lion 和 Ubuntu)上安装了 phantomjs (1.9.1) 和 phantom-jasm
当创建具有重要finalize()方法的对象时,JVM将创建Finalizer(FinalReference)并以此对象作为引用。如果这个对象也被软引用/弱引用或幻像引用包装,会发生什么? GC 是否
我正在尝试使用 Phantomjs 从用户所在的同一页面捕获屏幕截图。 例如,用户在 my-page.html 上对该页面的元素进行了一些更改,现在我需要对该页面内的元素(DIV)进行屏幕截图(my-
我正在尝试提取网页的特定元素,并将其保存为本地镜像。 node.js 代码,使用 phantom-node: var phantom = require('phantom'); phantom.cre
我正在使用 PhantomJS 2 点击页面元素。但是,我不知道点击这些元素是否会触发事件(例如页面加载)。 我希望能够处理这两种情况: 当点击一个元素触发页面加载时,我想等到新页面加载完毕。 当点击
我希望模拟一个相当糟糕的 API,它具有重复数据的字段,因此我尝试创建一个 Mirage Factory 来生成一些随机数据 例如 import { Factory, faker } from 'em
使用 Intellij(v14 和现在的 v15),我设置了断点来调试来自外部依赖项(通常是快照版本)的尚未发布的类,用于在 Tomcat 7+ 中运行的 Web 应用程序。 当我将该外部依赖项更改为
从昨天开始,我遇到了 CasperJS 和一个站点的问题。从昨天开始就连不上服务器了。但是,我在 Windows 上的脚本运行良好。我的生产服务器上有这个错误: 2015-04-01T09:46:02
我正在尝试对一个从未完成过的按钮执行操作。 final Actions action = new Actions(mDriver); final WebElement myCart = mDr
我正在使用 HTML5 拖放。在 Windows 7 上进行拖放 (DnD) 期间,我在拖动项目时看不到幻影。它影响所有浏览器。如何让它显示? 最佳答案 您需要运行主题服务。这是你如何做到的。 开始
使用 PhantomJS 考虑以下代码片段: var reloadAfterLogin = false; function(user, pass, debug){ // step 3 submit L
按照 MSSQLTips 博客文章中的说明,我设置了带有 Foreach 循环的包,以循环遍历工作簿中的所有工作表并将数据导入表中。 循环正在查找正确的工作表 ( '11-18$' ),然后是具有更长
当我在 Node 中的 docker 中运行我的 phantomjs 应用程序时,它工作正常(将 HTML 转换为 Jpeg)。 但是,当我将它发布到 docker 容器时,字体名称不再受到尊重。 此
我是一名优秀的程序员,十分优秀!