2013-04-04 26 views
5

Hãy nói rằng tôi phân tích một trang web sử dụng dưới đây biểuR, biểu xpath Ngay khi sử dụng XML và xpathSApply

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

nếu tôi chạy bên dưới mã,

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

tôi sẽ nhận được dưới đây -

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

Bây giờ, những gì tôi quan tâm chỉ là phần "Khách hàng cũng được cài đặt". Nhưng khi tôi chạy mã dưới đây,

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

nó spits ra tất cả các ứng dụng bao gồm trong "More Apps bởi King.com Tất cả ứng dụng", "Khách hàng phi mậu dịch" và "Khách hàng cũng cài đặt".

Vì vậy, tôi cố gắng,

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

nhưng điều này đã không làm việc. Vì vậy, tôi đã thử

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

nhưng điều này không hoạt động. (Đầu ra phải giống như dưới đây)

[,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/" 

Mọi hướng dẫn sẽ được đánh giá cao!

+0

+1! câu hỏi tuyệt vời. tái sản xuất và bạn đã cho thấy những gì bạn đã thử cho đến nay. – agstudy

Trả lời

5

Đây là một lựa chọn (bạn đã thực sự đóng):

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

Cảm ơn rất nhiều !! Bây giờ tôi biết nó hoạt động như thế nào! – user1486507

Các vấn đề liên quan