我需要废弃这个网页,所以我可以有这样一个data.frame:
value01 value02 id
SECTION I LIVE ANIMALS ANIMAL PRODUCTS sectionI
CHAPTER 1 LIVE ANIMALS chap0100000000
0101 Live horses, asses, mules and hinnies : (TN701) 0101000000-1
- Horses : 0101210000-2
0101 21 - - Pure-bred breeding animals (NC018) 0101210000-80
0101 29 - - Other : 0101290000-3
0101 29 10 - - - For slaughter 0101291000-80
0101 29 90 - - - Other 0101299000-80
0101 30 - Asses 0101300000-80
要获取value01和value02的前两行,我使用:
unlist((remDr$getPageSource()[[1]] %>% read_html(encoding = 'UTF-8') %>% html_elements('.section') %>% html_table())[2])
unlist((remDr$getPageSource()[[1]] %>% read_html(encoding = 'UTF-8') %>% html_elements('.chapter') %>% html_table())[2])
为了获得value01和value02的其余值,我使用(我需要在使用此代码获得它们后清理获得的值,但我认为有更好的方法来获取数据):
remDr$getPageSource()[[1]] %>% read_html() %>% html_element(xpath = '//*[@id="div_description"]') %>% html_table()
所以我现在的问题是得到我想要的data.frame的id列,并把它们放在一起。关于如何从这里开始实现我的目标,有什么建议吗?
运行上述示例所需的代码:
suppressMessages(suppressWarnings(library(RSelenium)))
suppressMessages(suppressWarnings(library(rvest)))
rD <- rsDriver(browser = 'firefox', port = 6000L, verbose = FALSE)
remDr <- rD[['client']]
remDr$navigate('https://ec.europa.eu/taxation_customs/dds2/taric/measures.jsp?Lang=en&Domain=TARIC&Offset=0&ShowMatchingGoods=false&callbackuri=CBU-1&SimDate=20220719')
我不太清楚你想从那个页面上抓取什么,但这就是你如何获得我认为你想要的数据。
pg <- remDr$getPageSource()[[1]]
doc <- xml2::read_html(pg)
# first two lines
rvest::html_elements(doc, '#sectionI table , .chapter') |>
rvest::html_table()
# get the data from each further line
lines <- rvest::html_elements(doc, ".evenLine")
data <- rvest::html_table(lines)
ids <- rvest::html_attrs(lines) |> sapply(function(x) x[1])
您需要根据自己的喜好清理抓取的数据。
如果这不是你想要的,你应该进一步澄清你的问题。