我正在尝试使用MATLAB中的urlread()
函数来抓取网页,尽管我遇到了一个我以前没见过的问题。当我运行代码时
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)时,访问该页面时没有任何问题。有没有人有解决这个问题的方法?
答案 0 :(得分:5)
该网站似乎阻止了http请求中的默认MATLAB Rxxxxx
user-agent参数。
伪造用户代理似乎解决了这个限制:
x = urlread('http://espn.go.com/mens-college-basketball/schedule/_/date/20141114', 'UserAgent', 'Mozilla/5.0');
答案 1 :(得分:0)
这对我没用,但确实如此。
URL = 'http://espn.go.com/mens-college-basketball/schedule/_/date/20141114';
str = urlread(URL,'Get',{'term','urlread'});
答案 2 :(得分: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]]