请教一下如何抓取下面这个网页中的数据?

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&params=%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 中的 &para 几个字做了错误的转义 。。。

正确的代码已经贴到 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. 即可。

弱问一下,那个url = 'http://cn.soccerway.com/a/block_comp...'是怎么找到的?

回复 第8楼 的 buxx:

http://cos.name/cn/topic/107729

回复 第9楼 的 肖楠: 学习了,谢谢!

7 个月 后

回复 第2楼 的 肖楠:刚尝试运行一下,发现该网页已不复存在,可以给个例子嚒?[s:19]

1 个月 后

尝试采集发生事件的时间与该事件种类,不过发现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>