在r中的rvest包中的html函数中使用哪个选择器?

时间:2015-03-09 16:28:04

标签: html r parsing rvest

我想解析包含这些信息的HTML页面:

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Tajemnica Oscara Pistoriusa - Książki - WP.PL</title>
<meta name="description" content="Wieczorem, 13 lutego 2013 roku ona pisze dla niego kartkę na walentynki: &lt;b&gt;&quot;Dziś jest dobry dzień, by powiedzieć, że Cię kocham&quot;.&lt;/b&gt; Zanim on odczyta tę wiadomość, ona od kilku godzin nie..." />
<meta name="keywords" content="ksiazki, książka, literatura, czytelnik" />
<meta name="language" content="pl" />
<meta name="author" content="Grupa Wirtualna Polska" />
<meta name="robots" content="index,follow" />

我在R中使用rvest package。当我使用此代码时,使用此选择器:"meta"

library(rvest)

content <- html("http://ksiazki.wp.pl/gid,17325376,tytul,Tajemnica-Oscara-Pistoriusa,galeria.html?ticaid=1147a0&_ticrsn=3")

nodesS <- html_nodes(content, "meta")

我收到了所有metas的列表,但我只对一个特定的感兴趣。 我应该使用哪个选择器来下载content中的那些信息:

<meta name="keywords" content="ksiazki, książka, literatura, czytelnik" />

修改的: 谁能知道如何正确设置encoding参数? 我收到了错误的编码,同时指定它:

> content <- html("http://ksiazki.wp.pl/gid,17325376,tytul,Tajemnica-Oscara-Pistoriusa,galeria.html?ticaid=1147a0&_ticrsn=3", 
+                 encoding = "UTF-8" )
> 
> nodesS <- html_nodes(content, "meta[name=keywords]")
> html_attrs(nodesS)[[1]][2]
                                    content 
"ksiazki, ksiÄ…ĹĽka, literatura, czytelnik" 

编辑:

我在hadley的github项目的readme.me概述中找到了函数guess_encoding()repair_encoding() https://github.com/hadley/rvest

1 个答案:

答案 0 :(得分:5)

更改您的CSS选择器以包含attribute value selector

nodesS <- html_nodes(content, "meta[name=keywords]")

然后,您可以通过添加:

来仅提取content属性
html_nodes(content, "meta[name=keywords]") %>% html_attr("content")
# [1] "ksiazki, książka, literatura, czytelnik"