4

我想解析包含此类信息的 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 。当我使用这样的代码时,使用这个选择器:"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")

我收到了所有元数据的列表,但我只对一个特定的感兴趣。我应该使用哪个选择器从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 项目https://github.com/hadley/rvest上找到了函数guess_encoding()repair_encoding()这个 readme.me 的概述

4

1 回答 1

5

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

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

然后,您可以content通过添加仅提取属性:

html_nodes(content, "meta[name=keywords]") %>% html_attr("content")
# [1] "ksiazki, książka, literatura, czytelnik"
于 2015-03-09T16:33:38.827 回答