【问题标题】:Why R can't scrape these links?为什么 R 不能抓取这些链接?
【发布时间】:2017-08-10 10:44:03
【问题描述】:

我正在尝试从下面列出的 url 中抓取链接和点击。我可以使用 xPath 抓取“点击”,但在抓取“链接”时遇到问题:这些数据是“NA”。谁能解释一下这个以及如何解决它?这是我的脚本

library(RSelenium)
library(XML)
remDr <- remoteDriver(remoteServerAddr= "192.168.99.100", port = 4445L)
remDr$open()

remDr$navigate("http://bit.d o")
logbutton <- remDr$findElement("css selector", "#top_login_info a:nth-child(1)")
logbutton$clickElement()
user <- remDr$findElement('css selector', '#login_user_username')
pass <- remDr$findElement('css selector', '#login_user_password')
user$sendKeysToElement(list('test0001'))
pass$sendKeysToElement(list('qwerty1234'))
logb <- remDr$findElement('css selector', '.btn-primary')
logb$clickElement()
remDr$navigate('http://bit.d o/admin/url/http%3A%7C%7C2F%7C%7C2Fedition.cnn.com%7C%7C2F2017%7C%7C2F07%7C%7C2F21%7C%7C2Fopinions%7C%7C2Ftrump-russia-putin-lain-opinion%7C%7C2Findex.html')

html <- htmlParse(remDr$getPageSource()[[1]])
clicks = xpathSApply(html,'//td//span[(((count(preceding-sibling::*) + 1) = 1) and parent::*)]')
links = xpathSApply(html, '//td//br+//a')

重要提示:由于 SO 限制,我不得不在域名中的“D”和“O”之间放置一个空格

【问题讨论】:

    标签: r xpath web-scraping


    【解决方案1】:

    您的链接 XPATH 似乎不正确。我使用了selector gadget 并为链接提取了以下内容(不确定您对哪个感兴趣,因此短(bit.do/...)和长(cnn.com./...)链接的xpaths如下:

    short_links <- xpathSApply(html, '//td//a[(((count(preceding-sibling::*) + 1) = 2) and parent::*)]')
    long_links <- xpathSApply(html, '//span[(((count(preceding-sibling::*) + 1) = 5) and parent::*)]')
    

    顺便说一句,请注意您在问题中提供的凭据(登录名和密码)。得到您的答复后,我会尽快删除它们。

    【讨论】:

    • 感谢您对凭据问题的回答和建议。关于这一点,我不在乎提供它们,因为它们正在测试。无论如何,我需要短链接并且您提供的 xpath 有效,但我仍然感到困惑:我也在使用选择器小工具(v 1.1),但我仍然得到与上面写的相同的 xpath。你怎么可能得到不同的结果?我的版本过时了吗?
    • @MassimoPotenzi 我认为这是因为您使用 SelectorGadget 的方式。这不是那么严格,我必须通过尝试和错误来学习如何使用它。要获得您需要的 Xpath,您首先应该单击所需的元素(所有相似的元素都将是黄色的)。之后,您应该单击不需要的元素(单击的元素将变为红色,而其他元素将不再为黄色),直到黄色框仅出现在您需要的元素上。
    • 是的@Alexey Knorre 我已经知道了,我也完全一样。您可以在我提供的页面上自行尝试:隔离短链接 (http://bit.d o/scrptest*) 选择器小工具找到 7 个元素,只是短链接。尽管如此,它说 Xpath 应该是 '//td//br+//a' 和 css 'td br+ a'。我也尝试重新安装选择器小工具,但没有任何改变:(
    • @MassimoPotenzi 不知道。尝试其他浏览器。
    猜你喜欢
    • 2022-01-12
    • 2012-01-07
    • 1970-01-01
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多