2016-08-08 11 views
0

私はRでxml2パッケージを使用して、Webページからデータをスクレイプしています。私はこすりしたいテキストは、以下に示すタグで囲まれていますサブストリングを含む属性のRでのWebスクレイピング

<td> 
<a href="javascript:WebForm_DoPostBackWithOptions(new 
WebForm_PostBackOptions(&quot;ctl00$CenterContent$ctl01&quot;, 
&quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, 
true))">Species A  
</a></td> 
<td> 
<a href="javascript:WebForm_DoPostBackWithOptions(new 
WebForm_PostBackOptions(&quot;ctl00$CenterContent$ctl02&quot;, 
&quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, 
true))">Species B </a></td> 
<td><a href="javascript:WebForm_DoPostBackWithOptions(new 
WebForm_PostBackOptions(&quot;ctl00$CenterContent$ctl03&quot;, 
&quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, 
true))">Sepcies C </a></td> 
<td> 
<a href="javascript:WebForm_DoPostBackWithOptions(new 
WebForm_PostBackOptions(&quot;ctl00$CenterContent$ctl04&quot;, 
&quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, 
true))">Species D</a></td> 
<td> 
<a href="javascript:WebForm_DoPostBackWithOptions(new 
WebForm_PostBackOptions(&quot;ctl00$CenterContent$ctl05&quot;, 
&quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, 
true))">Species E </a></td> 

私はRに次のコード行を使用してみました:上記のコードでは

library(xml2) 
page = read_html(website) 
nodes = html_nodes(page, xpath='//td/a[@href*="javascript"]') 

、私はちょうど抽出したいですすべての部分文字列「のjavascript」を含むhref属性を持つノードが、私は以下のエラーメッセージが出ます:誰もが何か提案を持っている場合、私は感謝するだろう

xmlXPathEval: evaluation failed 
Warning message: 
In xpath_search(x$node, x$doc, xpath = xpath, nsMap = ns, num_results = Inf) : 
Invalid expression [1207] 

を。

ありがとうございました。

乾杯。

+0

を、あなたは 'xpath'を使用してに結びついていますか?そうでなければ、次のようにすることができます: 'jscripts <- page %>%rvest :: html_nodes( 'td')%>% rvest :: html_nodes( 'a')%>% rvest :: html_attr( 'href')%>% [grepl( 'javascript'、。)] '。パイプオペレータには 'magrittr'パッケージを使用する必要があります。 – Abdou

答えて

2

あなたは、あなたが興味を持っているテキスト含むhref持つアンカータグを見つけるためにあなたのxpathcontainsを使用することができます。

library(xml2) 
library(rvest) 
website <- '<td> 
<a href="javascript:WebForm_DoPostBackWithOptions(new 
WebForm_PostBackOptions(&quot;ctl00$CenterContent$ctl01&quot;, 
&quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, 
true))">Species A  
</a></td> 
<td> 
<a href="javascript:WebForm_DoPostBackWithOptions(new 
WebForm_PostBackOptions(&quot;ctl00$CenterContent$ctl02&quot;, 
&quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, 
true))">Species B </a></td> 
<td><a href="javascript:WebForm_DoPostBackWithOptions(new 
WebForm_PostBackOptions(&quot;ctl00$CenterContent$ctl03&quot;, 
&quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, 
true))">Sepcies C </a></td> 
<td> 
<a href="javascript:WebForm_DoPostBackWithOptions(new 
WebForm_PostBackOptions(&quot;ctl00$CenterContent$ctl04&quot;, 
&quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, 
true))">Species D</a></td> 
<td> 
<a href="javascript:WebForm_DoPostBackWithOptions(new 
WebForm_PostBackOptions(&quot;ctl00$CenterContent$ctl05&quot;, 
&quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, 
true))">Species E </a></td>' 
page <- read_html(website) 
nodes <- html_nodes(page, xpath='//td/a[contains(@href,"javascript")]') 

> nodes 
{xml_nodeset (5)} 
[1] <a href="javascript:WebForm_DoPostBackWithOptions(new &#10;WebForm_PostBackOptions(&quot;ctl00$CenterConte ... 
[2] <a href="javascript:WebForm_DoPostBackWithOptions(new&#10;WebForm_PostBackOptions(&quot;ctl00$CenterConten ... 
[3] <a href="javascript:WebForm_DoPostBackWithOptions(new&#10;WebForm_PostBackOptions(&quot;ctl00$CenterConten ... 
[4] <a href="javascript:WebForm_DoPostBackWithOptions(new&#10;WebForm_PostBackOptions(&quot;ctl00$CenterConten ... 
[5] <a href="javascript:WebForm_DoPostBackWithOptions(new&#10;WebForm_PostBackOptions(&quot;ctl00$CenterConten ... 
> 
+0

ありがとう@jdharrison。それは完璧に働いた。 – ProfLonghair

関連する問題