我正在尝试清除一组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并不是一个好主意,因为它取决于屏幕截图的大小。
在这种情况下,如何最好地提取我想要的任何建议?谢谢。
答案 0 :(得分:3)
您可以使用正则表达式从脚本标记中提取数字。您会得到一个逗号分隔的字符向量
library(rvest)
library(stringr)
con <- url('https://secure.actblue.com/donate/pete-buttigieg-announcement-day?refcode=website', "rb")
page = read_html(con)
res <- page %>%
html_nodes(xpath=".//script[contains(., 'preloadedState')]")%>%
html_text() %>% as.character %>%
str_match_all(.,'(?<="amounts":\\[)(\\d+,?)+')
print(res[[1]][,1])
尝试here