2013-04-04 15 views
5

Diciamo che ho analizzato un sito web utilizzando sotto espressioneR, espressione XPath Proprio quando si utilizza XML e xpathSApply

library(XML) 
url.df_1 = htmlTreeParse("http://www.appannie.com/app/android/com.king.candycrushsaga/", useInternalNodes = T) 

se corro sotto il codice,

xpathSApply(url.df_1, "//div[@class='app_content_section']/h3", function(x) c(xmlValue(x), xmlAttrs(x)[["href"]])) 

mi metterò qui sotto -

[1] "Description"      "What's new"      
[3] "Permissions"      "More Apps by King.com All Apps »" 
[5] "Customers Also Viewed"   "Customers Also Installed"  

Ora, quello che mi interessa è solo la parte "Clienti installati anche". Ma quando si esegue il codice qui sotto,

xpathSApply(url.df_1, "//div[@class='app_content_section']/ul/li/a", function(x) c(xmlValue(x), xmlAttrs(x)[["href"]])) 

sputa fuori le tutte le applicazioni incluse in "Altre Applicazioni di King.com Tutte le applicazioni", "I clienti hanno anche visualizzato" e "I clienti installato anche".

Così ho provato,

xpathSApply(url.df_1, "//div[h3='Customers Also Installed']”, function(x) c(xmlValue(x), xmlAttrs(x)[["href"]])) 

ma questo non ha funzionato. Così ho provato

xpathSApply(url.df_1, "//div[contains(.,'Customers Also Installed')]",xmlValue) 

ma questo non funziona neanche. (L'output dovrebbe essere qualcosa come sotto-)

[,1]             
[1,] "Christmas Candy Free\n Daniel Development\n " 
[2,] "/app/android/xmas.candy.free/"      
[,2]           
[1,] "Jewel Candy Maker\n Nutty Apps\n "  
[2,] "/app/android/com.candy.maker.jewel.nuttyapps/" 
[,3]          
[1,] "Pogz 2\n Terry Paton\n "   
[2,] "/app/android/com.terrypaton.unity.pogz2/" 

Qualsiasi consiglio sarà molto apprezzato!

+0

+1! ottima domanda. riproducibile e hai mostrato ciò che hai provato fino ad ora. – agstudy

risposta

5

Qui è un'opzione (che si era davvero vicino):

xpathSApply(url.df_1,"//div[contains(.,'Customers Also Installed')]/*/li/a",xmlGetAttr,'href') 

[1] "/app/android/xmas.candy.free/"     
[2] "/app/android/com.candy.maker.jewel.nuttyapps/" 
[3] "/app/android/com.terrypaton.unity.pogz2/" 
+0

Grazie mille !! Ora so come funziona! – user1486507

Problemi correlati