【发布时间】:2019-05-12 09:07:58
【问题描述】:
我正在尝试删除一组donation websites 中列出的数量。所以在这个例子中,我想得到
3 美元、10 美元、25 美元、100 美元、250 美元、1500 美元、2800 美元
xpath 表明其中一个应该是
/html/body/div[1]/div[3]/div[2]/div/div[1]/div/div/
form/div/div[1]/div/div/ul/li[2]/label
和css选择器
li.btn--wrapper:nth-child(2) > label:nth-child(1)
直到下面,我在xml_nodeset看到了一些东西:
library(rvest)
url <- "https://secure.actblue.com/donate/pete-buttigieg-announcement-day"
read_html(url) %>% html_nodes(
xpath = '//*[@id="cf-app-target"]/div[3]/div[2]/div/div[1]/div/div'
)
然后我看到添加了 xpath 的第二部分,它显示为空白。与
相同X %>% html_nodes("li")
这提供了很多东西,但所有StyledButton__StyledAnchorButton-a7s38j-0 kEcVlT 都变成空白。
我现在已经和rvest 合作了一段时间,但这个令人莫名其妙。而且我不太确定RSelenium 将如何提供帮助,尽管我知道如何将其用于屏幕截图和点击。如果有帮助,该网站也拒绝成为captured in the wayback machine——只有背景,没有别的。
我什至尝试使用RSelenium 截取屏幕截图并尝试使用tessaract 和magick 进行ocr,但是当其他页面正常工作时,这个特定示例非常失败,因为文本是白色的并且字体相当不标准.是的,我试过image_negate 和image_resize 看看它是否有帮助,但它只表明依赖OCR 是个坏主意,因为它取决于屏幕截图的大小。
关于如何在这种情况下最好地提取我想要的东西有什么建议吗?谢谢。
【问题讨论】:
-
似乎所有值都在标签
label中,并且没有其他label所以你只能使用//label来获取它 - 你不需要所有这些div和li -
我在网络浏览器中关闭了 JavaScript 并检查了页面 - 它使用 JavaScript 来显示它。但是在 Chrome/Firefox 中使用 DevTool 我看不到它从服务器读取它。但在 HTML 中,我发现了这个:
"amounts":[300,1000,2500,10000,25000,150000,280000]",你的值似乎是美分。 -
@furas 它是 美分(额头)---谢谢你的提示。
标签: r web-scraping rvest