Downloading Data off a URL and specifying what portion of the URL to save.
조회 수: 2 (최근 30일)
이전 댓글 표시
I am trying to take Data off 'http://tidesandcurrents.noaa.gov/harcon.html?id=9410170' and upload it to arrays. The problem that I am running into is whenever I websave or webread the URL the entire code comes up. I want to only download and save the Constituent #, Name, Amplitude, Phase, Speed, and Description portion of the URL and have MatLab display those variables separately as arrays, to be used later on.
댓글 수: 2
Kleber Zuza Nobrega
2016년 4월 6일
Try this: pattern='<dt>Constituent #</dt>\s*<dd>(?<Cons>.*?(</dd>)?)\s*<dt>Name</dt>\s*<dd>(?<Nam>.*?)</dd>\s*<dt>Amplitude</dt>\s*<dd>(?<Amp>.*?)</dd>\s*<dt>Phase</dt>\s*<dd>(?<Pha>.*?)</dd>\s*<dt>Speed</dt>\s*<dd>(?<Spe>.*?)</dd>\s*<dt>Description</dt>\s*<dd>(?<Des>.*?)</dd>'
res=regexp(code,pattern,'names')
res.Cons %to have access to the text!! and so on res.Nam res.Amp res.Pha res.Spe res.Des
Kleber Zuza Nobrega
2016년 4월 6일
편집: Kleber Zuza Nobrega
2016년 4월 6일
code=webread('http://tidesandcurrents.noaa.gov/harcon.html?id=9410170')
pattern='<td>(.*?)</td><td>(.*?)</td><td>(.*?)</td><td>(.*?)</td><td>(.*?)</td><td>(.*?)</td>'
res=regexp(code,pattern,'tokens')
Sorry... Misunderstood. Try this!!
답변 (2개)
Tim Jackman
2015년 9월 16일
Webread is designed for RESTful web services, so using it here isn't going to be ideal. You could parse the html code and grab information from the table between the thead and tbody tags, but I'd recommend giving one of these from the File Exchange a try:
댓글 수: 0
Robert Snoeberger
2015년 10월 26일
편집: Robert Snoeberger
2015년 10월 26일
As Tim Jackman correctly pointed out, webread is designed for RESTful web services. Consuming an API provided by a web service will be much easier than screen scraping the data.
The tidesandcurrents.noaa.gov site does provide an API [1], which I found with a google search. The following is an example of using webread to read the data from the web service. The example is based on the "Sample URL requests and responses" section of the API documentation.
>> opts = weboptions('ContentType', 'json');
>> url = 'http://tidesandcurrents.noaa.gov/api/datagetter';
>> result = webread(url, opts, 'product', 'water_level', 'begin_date', '20130101', 'end_date', '20130101', 'station', '8454000', 'time_zone', 'gmt', 'units', 'metric', 'datum', 'mllw', 'format', 'json')
result =
metadata: [1x1 struct]
data: [240x1 struct]
>> result.data(1)
ans =
t: '2013-01-01 00:00'
v: '0.549'
s: '0.004'
f: '0,0,0,0'
q: 'v'
>>
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Web Services에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!