4

我正在尝试使用urlread()MATLAB 中的函数来抓取网页,尽管我遇到了以前从未见过的问题。当我运行代码时

X = urlread('http://espn.go.com/mens-college-basketball/schedule/_/date/20141114');

我得到错误

Error using urlreadwrite (line 92) The server did not find a resource to match this request.

Error in urlread (line 36) [s,status] = urlreadwrite(mfilename,catchErrors,url,varargin{:});

当我尝试访问浏览器上的链接 ( http://espn.go.com/mens-college-basketball/schedule/_/date/20141114 ) 时,访问该页面没有问题。有没有人可以解决这个问题?

4

3 回答 3

5

该站点似乎正在阻止MATLAB Rxxxxxhttp 请求中的默认用户代理参数。

伪造用户代理似乎可以解决这个限制:

x = urlread('http://espn.go.com/mens-college-basketball/schedule/_/date/20141114', 'UserAgent', 'Mozilla/5.0');
于 2015-11-12T22:55:39.047 回答
0

这对我不起作用,但这确实有效。

URL = 'http://espn.go.com/mens-college-basketball/schedule/_/date/20141114';
str = urlread(URL,'Get',{'term','urlread'});
于 2015-11-14T17:21:46.923 回答
0

虽然我认为 r 和 Python 对于网络抓取练习要好得多。

这是一个很好用的 R 脚本。

library(rvest)
rawhtml <- read_html("http://espn.go.com/mens-college-basketball/schedule/_/date/20141114")
rvested <- rawhtml %>% 
    html_nodes("table") %>%
    html_table(fill = TRUE) %>%
    .[[1]]
于 2015-11-14T17:26:18.340 回答