我正在尝试抓取国家气象服务网页,只取出部分文本并将其转换为R中的角色对象。它最终会成为NWS页面上显示的一个小段落。 (见下文)
我一直在用rvest包抓取网页,并尝试了一些XML包的代码。
这是我的代码,其中包含了Weather Service URL。
weather_con <- read_html("http://forecast.weather.gov/product.php?site=TWC&issuedby=TWC&product=AFD&format=txt&version=1&glossary=1")
weather_con <- weather_con %>%
html_nodes("#localcontent") %>%
html_text()
我也尝试过使用rvest和XML包以及这段代码
weather_con <- getURL("http://forecast.weather.gov/product.php?site=TWC&issuedby=TWC&product=AFD&format=txt&version=1&glossary=1")
weather_con <- htmlParse(weather_con, asText = T)
这两组代码都在页面的所有文本中读取。我尝试了其他选项,并试图找到页面的节点来抓取文本的某些部分,但我还没有找到任何有用的东西。我对HTML没什么经验,所以我可能会在这里找不到容易的东西。
我想要退出网页的是SYNOPSIS段落。这是一个靠近页面顶部的小段,方便地以两个&amp;&amp; amp;符号在段落结束的下面一行。
也许我需要类似substr
函数的东西,我可以直接删除该段落。但是,我希望在rvest和XML中找到一些东西来完成这项工作。
有什么建议吗?
谢谢
答案 0 :(得分:2)
weather_con
已经包含了您需要的文字,但它附带了所有其他文字。
提取它的一种方法是使用正则表达式。
synopsis = regmatches(x = weather_con,
m = regexpr(pattern = "SYNOPSIS[^&]*",
text = weather_con))
这将捕获从SYNOPSIS到第一个非&
的所有内容。
结果:
[1] "SYNOPSIS...Strong high pressure aloft will
maintain well above\naverage temperatures today. Thursday
and Friday will see us between\nlow pressure developing
north of the area and high pressure shifting\nsouthward.
As a result, expect gusty winds and several degrees
of\ncooling. Strengthening high pressure this weekend
will again push\ntemperatures above average.\n\n"
如果synopsys包含&
,那么您可以捕获文本直到单词DISCUSSION。
synopsis2 = regmatches(x = weather_con,
m = regexpr(pattern = "SYNOPSIS.*DISCUSSION",
text = weather_con))
结果相似。此结果以above average.\n\n&&\n\n.DISCUSSION