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

Mar*_*ski 4 html parsing r 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" />
Run Code Online (Sandbox Code Playgroud)

我在R中使用rvest .当我使用这样的代码时,使用这个选择器:"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")
Run Code Online (Sandbox Code Playgroud)

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

<meta name="keywords" content="ksiazki, ksi??ka, literatura, czytelnik" />
Run Code Online (Sandbox Code Playgroud)

编辑:谁能知道如何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" 
Run Code Online (Sandbox Code Playgroud)

编辑:

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

Dav*_*son 5

更改CSS选择器以包含属性值选择器:

nodesS <- html_nodes(content, "meta[name=keywords]")
Run Code Online (Sandbox Code Playgroud)

然后,您可以content通过添加以下内容来提取属性:

html_nodes(content, "meta[name=keywords]") %>% html_attr("content")
# [1] "ksiazki, ksi??ka, literatura, czytelnik"
Run Code Online (Sandbox Code Playgroud)