作者corel (可罗)
看板R_Language
标题[问题] 撷取网页内的某一笔资料
时间Wed Jan 13 12:06:11 2016
[问题类型]:
程式谘询(我想用R 做某件事情,但是我不知道要怎麽用R 写出来)
[软体熟悉度]:
入门(写过其他程式,只是对语法不熟悉)
[问题叙述]:
请简略描述你所要做的事情,或是这个程式的目的
# Q:想要撷取出网页中某区块标签所有的文字,包含html标签等内的某一资料
#结果:
#撷取出网页内所有同属性的资料...
# crawl library ----
library(bitops)
library(XML)
library(RCurl)
# only for windows -----
signatures <- system.file("CurlSSL", cainfo="cacert.pem", package="RCurl")
# 网址缩址
http://tinyurl.com/jgoun9c
home <-
"
http://www.expodatabase.com/aussteller/messen/index.php?OK=1&sortierid=0&maxPerPage=20&i_cockpitkeyfindwo=2&i_cockpitkeyfindart=1&currPage=1"
home <- getURL(home, cainfo = signatures)
home <- htmlParse(home)
# 共有20笔的block
block <-getNodeSet(home, "//div[@class='shm']")
# length(block) # 共20笔
doc <- block[[1]] # 抓取第一笔
# doc
# <div class="shm">
# <div class="listdates">
# <div class="date">08Jan-17Jan2016</div>
# </div>
# <div class="search_result_list_box">
# <div class="city">London, United Kingdom</div>
# <div class="firma"><a
href="show.php?id=352&timer=m1452657261&tmid=&currPage=1&maxPerPage=20&params=timer%3Dm1452657261%26amp%3Btimer%3Dm1452657261%26amp%3Bi_cockpitkeyfindwo%3D2%26amp%3Bi_cockpitkeyfindart%3D1%26amp%3Bsortierid%3D0%26amp%3Btimer%3Dm1452657261%26amp%3BmaxPerPage%3D20%26amp%3BshowPrintlist%3D0%26amp%3BmaxPerPage%3D20">London
Boat Show</a></div>
# </div>
# <div class="search_result_box_right">
# <div class="branchen"><strong>Business sectors:</strong> Boats</div>
# </div>
# <div class="fixfloat"></div>
# </div>
# 想要抓取 block[[1]]笔的 class="date" 的 08Jan-17Jan2016
date <- xpathSApply(doc, "//div[@class='date']", xmlValue)
# 结果秀出网页内全部 date 的资料
# [1] "08Jan-17Jan2016" "08Jan-17Jan2016" "09Jan-17Jan2016" "07Jan-15Jan2017"
"06Jan-14Jan2018"
# [6] "09Jan-17Jan2016" "09Jan-17Jan2016" "09Jan-17Jan2016" "09Jan-17Jan2016"
"10Jan-13Jan2016"
# [11] "10Jan-13Jan2016" "10Jan-13Jan2016" "10Jan-13Jan2016"
"11Jan-13Jan2016" "11Jan-13Jan2016"
# [16] "11Jan-13Jan2016" "11Jan-14Jan2016" "11Jan-14Jan2016"
"11Jan-14Jan2016" "11Jan-14Jan2016"
# [21] "11Jan-14Jan2016" "11Jan-24Jan2016" "09Jan-22Jan2017"
我的问题是, doc <- block[[1]]
不是己经抓取出 於 block 中第一笔资料并且储存在doc中吗?
结果用 xpathSpply 撷出来的..竟然是网页中 date 全部资料?
想请教一下, 我该用那一个函数或方法才能只抓到 block[[1]]中 xml的资料?
并且解析出 date 为 08Jan-17Jan2016 ?
谢谢
#线上程式:
#
http://ideone.com/ZqHAqr
--
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 211.73.74.11
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1452657983.A.FDA.html
※ 编辑: corel (211.73.74.11), 01/13/2016 14:45:55
※ 编辑: corel (211.73.74.11), 01/13/2016 14:46:30
※ 编辑: corel (211.73.74.11), 01/13/2016 14:47:56
1F:→ corel: 用查 xmlRoot(doc) 竟然秀出来的是整个网页 01/13 15:13
2F:推 JackBaska: google看看html_nodes 还有 SelectorGadget 01/13 15:26
3F:→ corel: toJ大:我找到一个很笨的解决方法了 01/13 17:08