【问题标题】:html_form from rvest doesn't recognise formrvest 的 html_form 无法识别表单
【发布时间】:2016-11-21 15:34:15
【问题描述】:

我正在尝试用rvest 抓取this website 的内容(不是链接的论文/摘要,只是编号、标题、作者等)。

默认情况下,页面仅显示 2016 年的论文,抓取 2016 年的数据“没问题”。我希望在将“2016”更改为“所有年份”后 URL 会发生变化,但它保持不变。所以我求助于html_form。在检查网页的“资源”时,我发现相关的输入名称是filteryear

R 代码

library(rvest)
rdc <- html_session("https://sfb649.wiwi.hu-berlin.de/fedc/discussionPapers_formular_content.php")
form <- html_form(rdc)
form <- set_values(form, filteryear = "all years")
#Error: Unknown field names: filteryear

显然,filteryear 不是表单的一部分。由于我的 HTML 知识有限,我很确定以下内容告诉我,该表单由三个输入组成:filterTypeNamefilterNamefilteryear

来自资源的 HTML:

<form action='discussionPapers_formular_content.php' method='post'>
  <select name='filterTypeName'>
    <option value='AUTHORS'>Author</option>
    <option value='PROJECT'>Project Code</option>
    ...
    <option value='JEL'>JEL</option
  </select> </td>                            # Is this </td> the problem?!
  <td valign='baseline'> 
    <input type='text' size='35' name='filterName' >
  </td> 
  <td valign='baseline'>
    <select name='filteryear'>
       <option value='2005'>2005</option>
       ...
       <option value='2016'>2016</option>
       <option value='all'>all years</option>
    </select>
  </td>                                    
  <td valign='baseline'>
     &nbsp;&nbsp;<INPUT type='submit' value='Search' name='B1'></INPUT>
  </td></tr>                                   
</form>

为什么html_form 不能完全识别这个表单?而且,更重要的是,有没有办法解决这个问题?

【问题讨论】:

    标签: html r web-scraping rvest


    【解决方案1】:

    我算把html_form 带去上班,但你可以简单地手动httr::POST 表格如下:

    library(rvest)
    library(httr)
    res <- POST("https://sfb649.wiwi.hu-berlin.de/fedc/discussionPapers_formular_content.php",
         body = list(filterTypeName = "filterTypeName:AUTHORS",
                     filteryear = "all",
                     B1 = "Search"), encode = "form")
    out <- read_html(res) %>% html_table(fill=TRUE)
    

    我猜第 7 桌是你想要的:

    > dim(out[[7]])
    [1] 805  10
    
    > head(out[[7]])
    
            X1                                                                                     X2
    1 2016-049                                                                              Q3-D3-LSA
    2 2016-048                                     Unraveling of Cooperation in Dynamic Collaboration
    3 2016-047                                                            Time Varying Quantile Lasso
    4 2016-046                                                           Credit Rating Score Analysis
    5 2016-045                                          Information Acquisition and Liquidity Dry-Ups
    6 2016-044 Dynamic Contracting with Long-Term Consequences: Optimal CEO Compensation and Turnover
                                                                      X3  X4         X5                       X6
    1                               Lukas Borke and   Wolfgang K. Härdle  B1 15.11.2016        C87,   C88,   G17
    2                                                        Suvi Vasama  A8 07.11.2016        C73,   D83,   O31
    3      Lenka Zbonakova,  Wolfgang Karl H\177ardle and   Weining Wang  B1 07.11.2016 C21,   G01,   G20,   G32
    4 Wolfgang Karl H\177ärdle,  Phoon Kok Fai and   David Lee Kuo Chuen  B1 02.11.2016 C01,   G00,   G17,   G24
    5                                 Philipp Koenig and   David Pothier C10 26.10.2016        D82,   G01,   G12
    6                                                        Suvi Vasama  A8 26.10.2016        C73,   D82,   D86
      X7 X8 X9 X10
    1 NA NA NA  NA
    2 NA NA NA  NA
    3 NA NA NA  NA
    4 NA NA NA  NA
    5 NA NA NA  NA
    6 NA NA NA  NA
    

    【讨论】:

      猜你喜欢
      • 2021-11-24
      • 2016-04-01
      • 2019-01-31
      • 1970-01-01
      • 1970-01-01
      • 2020-11-21
      • 1970-01-01
      • 2013-05-28
      • 2016-03-11
      相关资源
      最近更新 更多