请教一下如何抓取下面这个网页中的数据?
http://www.soccerway.com/national/england/premier-league/20122013/regular-season/matches/
以及如何透过表格右上角的Previous, Next 来切换数据.
请教一下如何抓取下面这个网页中的数据?
http://www.soccerway.com/national/england/premier-league/20122013/regular-season/matches/
以及如何透过表格右上角的Previous, Next 来切换数据.
<br />
require(RCurl)<br />
require(rjson)<br />
require(XML)<br />
url = 'http://cn.soccerway.com/a/block_competition_matches?block_id=page_competition_1_block_competition_matches_7&callback_params=%7B%22page%22%3A%22-1%22%2C%22round_id%22%3A%2217950%22%2C%22outgroup%22%3A%22%22%2C%22view%22%3A%222%22%7D&action=changePage¶ms=%7B%22page%22%3A0%7D'<br />
doc = getURL(url)<br />
txt = fromJSON(doc)$commands[[1]]$parameters$content<br />
tab = readHTMLTable(htmlParse(txt, encoding = 'utf-8'))[[1]]<br />
</p>
页码基准是 0,url 末尾 %7D 前边的 0 改成 -1, -2, 1, 2 ... 即可。
回复 第2楼 的 肖楠:
在执行的getURL时出现错误。
> doc = getURL(url)
Error in curlPerform(curl = curl, .opts = opts, .encoding = .encoding) :
embedded nul in string: '37<U+008B>\b'
是因为这边出现边码错误所导致吗?
=changePage¶ms=%7B%
还是语言的问题呢?
网页右上角,可以选 English (international)
我的R版本是2.15.2,
我晕,论坛的 code
环境对 url 中的 ¶
几个字做了错误的转义 。。。
正确的代码已经贴到 https://gist.github.com/4460443
Linux 下通过,Windows 下可能需要改一下编码的细节。
回复 第4楼 的 肖楠:
谢谢版大,目前在windows 7 下,没出现错误讯息。
但截录出来却是一串编码?
天数 日期 主队
1 <U+4E09> 26/12/12 <U+57C3><U+5F17><U+987F>
2 <U+4E09> 26/12/12 <U+5BCC><U+52D2><U+59C6>
是因为我作业环境是英文版的关系吗?
有办法转译成英文吗?
即一开始,连上网站,在网页右上角,选 English (international)
可是这样子,好像就无法套用URL这个变数了
回复 第5楼 的 tearbaby1219:
url 中的 cn. 替换为 www. 即可。
mark~~~
弱问一下,那个url = 'http://cn.soccerway.com/a/block_comp...'是怎么找到的?
回复 第8楼 的 buxx:
http://cos.name/cn/topic/107729
回复 第9楼 的 肖楠: 学习了,谢谢!
回复 第2楼 的 肖楠:刚尝试运行一下,发现该网页已不复存在,可以给个例子嚒?[s:19]
尝试采集发生事件的时间与该事件种类,不过发现html页面并无该node。请问该如何采集隐藏在F12中Element中的//table/tr/td/text呢?
>>> 打开 Chrome >>> 点击 F12 >>> 点击 Element 后才查看到该node
<br />
>require(RCurl);<br />
>require(XML);<br />
>lnk = "http://en.gooooal.com/soccer/analysis/8401/events_840182.html";<br />
>doc = htmlTreeParse(lnk,useInternalNodes=TRUE);<br />
>x = unlist(xpathApply(doc, "//table/tr/td"));<br />
</p>