[英]Undesired backslashes when reading a html with rvest
我正在嘗試使用rvest閱讀網站,我的代碼如下:
pg <- read_html("https://www.gob.mx/presidencia/archivo/prensa?utf8=%E2%9C%93&idiom=es&style=list&order=DESC&filter_id=&filter_origin=archive&tags=&year=&category=Discursos+del+Presidente&year=&category=Discursos+del+Presidente")
但是,當我閱讀“ pg”時,在html類之間會出現雙反斜杠,如以下代碼片段所示:
<a class='\\"small-link\\"' href="%5C%22/presidencia/es/prensa/epn-palabras-134612?idiom=es%5C%22" target='\\"_blank\\"'>
當我閱讀其他網站時,不會發生這種情況:
pg2 <- read_html("http://www.imdb.com/title/tt0245712/")
#output: <head>\n<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\n
知道為什么會發生這種情況嗎? 我真的想擺脫它,因為它阻礙了我使用html_nodes()檢索數據:
pg %>%
html_nodes(".small-link")
#output: {xml_nodeset (0)}
更新!
因此,在查看pg div類時,請使用以下雙反斜杠:
pg
#Result: <div class='\\"col-md-12' small-bottom-buffer>
如果我清理pg試圖刪除一個反斜杠,它似乎可以正常工作,而我只剩下一個:
pg2 <- gsub("\\\\", "", pg)
pg2
#Result: <div class='\"col-md-12' small-bottom-buffer>
但是,如果我嘗試刪除兩個反斜杠,我反而會得到三個反斜杠!:
pg3 <- gsub("\\\\\\\\", "", pg)
pg3
#<div class='\\\"col-md-12' small-bottom-buffer>
我不明白這種行為
我對rvest不夠熟悉,無法提供rvest解決方案,但是您可以使用readLines和grep查找所需的數據。 然后,您可以使用REGEX進行清理
pg3 <- readLines("https://www.gob.mx/presidencia/archivo/prensa?utf8=%E2%9C%93&idiom=es&style=list&order=DESC&filter_id=&filter_origin=archive&tags=&year=&category=Discursos+del+Presidente&year=&category=Discursos+del+Presidente")
grep('<a class=\"small-link\"', pg3, value = TRUE)
grep('<a class="small-link"', pg3, value = TRUE)
grep('<a class=\\"small-link\\"', pg3, value = TRUE)
所有這三個工作。 您看到\\“的原因是\\是轉義字符,而”是特殊字符,因為它用於將字符數據輸入到R中。例如:
> print("test"test")
Error: unexpected symbol in "print("test"test"
> print('test"test')
[1] "test\"test"
> print("test\"test")
[1] "test\"test"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.