【问题标题】:Scrape the Data with Rcurl使用 Rcurl 抓取数据
【发布时间】:2014-03-26 03:25:04
【问题描述】:

我想使用 Rcurl 和 XML 从以下 url 抓取一些数据。

http://datacenter.mep.gov.cn/report/air_daily/air_dairy.jsp?&lang=

数据范围从“2000-06-05”到“2013-12-30”,有10000多页。

此页面中与数据关联的元素。

<form name="report1_turnPageForm" method=post     
action="http://datacenter.mep.gov.cn:80/.../air.../air_dairy.jsp..." style="display:none">
<input type=hidden name=reportParamsId value=122169>
<input type=hidden name=report1_currPage value="1">
<input type=hidden name=report1_cachedId value=53661>
</form>

链接也是这样的

http://datacenter.mep.gov.cn/report/air_daily/air_dairy.jsp?city&startdate=2013-12-15&enddate=2013-12-30&page=31

有 startdate 和 enddate 和 page..

然后我开始爬网。

require(RCurl)
require(XML)
k = postForm("http://datacenter.mep.gov.cn/report/air_daily/air_dairy.jsp?&lang=")
k = iconv(k, 'gbk', 'utf-8')
k = htmlParse(k, asText = TRUE, encoding = 'utf-8')

那么..我不知道下一步该怎么做..我不确定我是否走在正确的轨道上?

我也试过了

k = sapply(getNodeSet(doc = k, path = "//font[@color='#0000FF' and @size='2']"),
       xmlValue)[1:24]

它不起作用..

可以给点建议吗?非常感谢!

也强烈欢迎 Scrapy 和 beautifulsoup 解决方案!

【问题讨论】:

    标签: r beautifulsoup scrapy rcurl


    【解决方案1】:

    如果XML 足够,也许这将是一个起点:

    require(XML)
    
    url <- "http://datacenter.mep.gov.cn/report/air_daily/air_dairy.jsp?city&startdate=2013-12-15&enddate=2013-12-30&page=%d"
    pages <- 2
    tabs <- vector("list", length=pages)
    
    for (page in 1:pages) {
      doc <- htmlParse(paste(suppressWarnings(readLines(sprintf(url, 
                                                                page), 
                                                        encoding="UTF-8")), 
                             collapse="\n"))
      tabs[[page]] <- readHTMLTable(doc, 
                                    header=TRUE, 
                                    which=4)  # readHTMLTable(doc)[["report1"]]
    }
    
    do.call(rbind.data.frame, tabs) # output
    

    【讨论】:

    • 非常感谢! @lukeA。我认为XML包中的汉字编码存在一些问题。返回的所有数据都是一些奇怪的字符..您对如何处理有一些建议吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-01
    • 1970-01-01
    • 2020-12-24
    相关资源
    最近更新 更多