मैं XPath वाक्यविन्यास का उपयोग करते हुए that page पर मुख्य तालिका से लिंक को स्क्रैप करने के लिए आर का उपयोग कर रहा हूं। मुख्य तालिका पृष्ठ पर तीसरा है, और मुझे केवल पत्रिका लेख वाले लिंक चाहिए।आर: XPath अभिव्यक्ति चयनित तत्व के बाहर लिंक लौटाती है
मेरे कोड इस प्रकार है:
require(XML)
(x = htmlParse("http://www.numerama.com/magazine/recherche/125/hadopi/date"))
(y = xpathApply(x, "//table")[[3]])
(z = xpathApply(y, "//table//a[contains(@href,'/magazine/') and not(contains(@href, '/recherche/'))]/@href"))
(links = unique(z))
आप उत्पादन को देखें, तो अंतिम लिंक मुख्य तालिका से लेकिन साइडबार से नहीं आते हैं, भले ही मैं पूछ कर मेरी तीसरी लाइन में मुख्य तालिका चयनित ऑब्जेक्ट y
केवल तीसरी तालिका को शामिल करने के लिए।
मैं क्या गलत कर रहा हूं? XPath के साथ कोड करने के लिए सही/अधिक कुशल तरीका क्या है?
नोट: XPath नौसिखिया लेखन।
उत्तर दिया (वास्तव में जल्दी), बहुत बहुत धन्यवाद! मेरा समाधान नीचे है।
extract <- function(x) {
message(x)
html = htmlParse(paste0("http://www.numerama.com/magazine/recherche/", x, "/hadopi/date"))
html = xpathApply(html, "//table")[[3]]
html = xpathApply(html, ".//a[contains(@href,'/magazine/') and not(contains(@href, '/recherche/'))]/@href")
html = gsub("#ac_newscomment", "", html)
html = unique(html)
}
d = lapply(1:125, extract)
d = unlist(d)
write.table(d, "numerama.hadopi.news.txt", row.names = FALSE)
यह कीवर्ड 'Hadopi' इस वेबसाइट पर साथ समाचार आइटम करने के लिए सभी लिंक बचाता है।
यही काम किया, सवाल जवाब प्रतिबिंबित करने के लिए संपादित। धन्यवाद! –