R网站抓取新闻网站:如何拉取主要内容

时间:2016-05-16 16:46:21

标签: r web-scraping

我的代码如下。它分为3个不同的新闻页面并提取其内容。但对于每个页面,我必须搜索不同的自定义html标记。

  1. 有没有办法通过搜索从任何新闻页面获取信息 只有1个标签?这将允许我从许多人那里获取信息 页面
  2. 如何搜索符合特定条件的标签:for     示例html_nodes like ("#main*")html_nodes like ("*main*")
  3. library(MASS) # base R

    library(XML)
    library(xml2)
    library(rvest)    # R web scraping
    
    
        # get the page using rvest fcns
        page2 <- read_html("http://seekingalpha.com/article/3974491-3-things-will-save-intels-future");
    
          page.all2 <- page2 %>%
          html_nodes("#main_container") %>%
          #html_nodes(class="*main*") %>%
          html_text()
         page.all2
    
        page5 <- read_html("http://www.fool.com/investing/general/2016/05/09/intel-corporations-strange-choice.aspx");
        page.all5 <- page5 %>%
          html_nodes("#article-1") %>%
          html_text()
          page.all5
    
        page1 <- read_html("http://www.valuewalk.com/2016/05/intel-no-2-explains-company-headed/ ");
        page.all1 <- page1 %>%
          html_nodes("#main") %>%
          html_text()
        page.all1
    
        # get a URL (1 URL per row in column link);
    

1 个答案:

答案 0 :(得分:1)

鉴于

html <- '
<div class="pain">A</div>
<div class="pain">B</div>
<div class="mainer">C</div>
<div class="emainer">D</div>'

你可以做例如

# all tags of class 'pain'
read_html(html) %>% xml_nodes(xpath="//*[@class='pain']")
# {xml_nodeset (2)}
# [1] <div class="pain">A</div>
# [2] <div class="pain">B</div>

# All DIV tags, where class names start with 'main'
read_html(html) %>% xml_nodes(xpath="//div[starts-with(@class, 'main')]")
# {xml_nodeset (1)}
# [1] <div class="mainer">C</div>

# All DIV tags, where class names contain 'main'
read_html(html) %>% xml_nodes(xpath="//div[contains(@class, 'main')]")
# {xml_nodeset (2)}
# [1] <div class="mainer">C</div>
# [2] <div class="emainer">D</div>