read_html() 在 R 会话中引发致命错误
read_html() induces fatal error in R session
我正在尝试使用 rvest 和 boilerpipeR 删除一组新闻文章。该代码在大多数情况下都可以正常工作,但是,它会因某些特定值而崩溃。我在网上到处搜索,找不到任何类似的人。
require(rvest)
require(stringr)
require(boilerpipeR)
# this is a problematic URL, its duplicates also generate fatal errors
url = "http://viagem.estadao.com.br/noticias/geral,museu-da-mafia-ganha-exposicao-permanente-da-serie-the-breaking-bad,10000018395"
content_html = getURLContent(url) # HTML source code in character type
article_text = ArticleExtractor(content_html) # returns 'NA'
# next line induces fatal error
encoded_exit = read_html(content_html ,encoding = "UTF-8")
paragraph = html_nodes(encoded_exit,"p")
article_text = html_text(paragraph)
article_text = iconv(article_text,from="UTF-8", to="latin1")
这不是 ArticleExtractor() returns 'NA' 处理的唯一新闻,构建代码是为了将其作为可行的结果进行处理。整个代码片段都在 tryCatch() 中,因此常规错误不应停止执行。
主要问题是整个 R 会话崩溃并且必须重新加载,这使我无法获取数据并进行调试。是什么导致了这个问题?我怎样才能阻止它使整个 R 会话崩溃?
我遇到了同样的问题。
RScript 崩溃时没有任何错误消息(会话中止),无论我使用 32 位还是 64 位。
我的解决方案是查看我正在抓取的 URL。
如果 URL 在 HTML-Code-syntax 中有一些严重的错误,RScript 将会崩溃。它是可复制的。使用 https://validator.w3.org 检查页面。
你的情况:
"Error: Start tag body seen but an element of the same type was
already open."
From line 107, column 1; to line 107, column 25
崩溃了。所以您的文档有两个 <body><body>
个起始标签。对我来说,一个快速而肮脏的解决方案是先检查 read_html 是否有效 HTML 内容:
url = "http://www.blah.de"
page = read_html(url, encoding = "UTF-8")
# check HTML-validity first to prevent fatal crash
if (!grepl("<html.*<body.*</body>.*</html>", toString(page), ignore.case=T)) {
print("Skip this Site")
}
# proceed with html_nodes(..) etc
我正在尝试使用 rvest 和 boilerpipeR 删除一组新闻文章。该代码在大多数情况下都可以正常工作,但是,它会因某些特定值而崩溃。我在网上到处搜索,找不到任何类似的人。
require(rvest)
require(stringr)
require(boilerpipeR)
# this is a problematic URL, its duplicates also generate fatal errors
url = "http://viagem.estadao.com.br/noticias/geral,museu-da-mafia-ganha-exposicao-permanente-da-serie-the-breaking-bad,10000018395"
content_html = getURLContent(url) # HTML source code in character type
article_text = ArticleExtractor(content_html) # returns 'NA'
# next line induces fatal error
encoded_exit = read_html(content_html ,encoding = "UTF-8")
paragraph = html_nodes(encoded_exit,"p")
article_text = html_text(paragraph)
article_text = iconv(article_text,from="UTF-8", to="latin1")
这不是 ArticleExtractor() returns 'NA' 处理的唯一新闻,构建代码是为了将其作为可行的结果进行处理。整个代码片段都在 tryCatch() 中,因此常规错误不应停止执行。
主要问题是整个 R 会话崩溃并且必须重新加载,这使我无法获取数据并进行调试。是什么导致了这个问题?我怎样才能阻止它使整个 R 会话崩溃?
我遇到了同样的问题。 RScript 崩溃时没有任何错误消息(会话中止),无论我使用 32 位还是 64 位。 我的解决方案是查看我正在抓取的 URL。 如果 URL 在 HTML-Code-syntax 中有一些严重的错误,RScript 将会崩溃。它是可复制的。使用 https://validator.w3.org 检查页面。 你的情况:
"Error: Start tag body seen but an element of the same type was already open."
From line 107, column 1; to line 107, column 25
崩溃了。所以您的文档有两个 <body><body>
个起始标签。对我来说,一个快速而肮脏的解决方案是先检查 read_html 是否有效 HTML 内容:
url = "http://www.blah.de"
page = read_html(url, encoding = "UTF-8")
# check HTML-validity first to prevent fatal crash
if (!grepl("<html.*<body.*</body>.*</html>", toString(page), ignore.case=T)) {
print("Skip this Site")
}
# proceed with html_nodes(..) etc