MATLAB Answers

Seeking Assistance in Using a GUI to Return Text From A Webpage

31 views (last 30 days)
Hello!
I am currently developing a MATLAB GUI using App Designer. The premise for this app is that users will able to select 1/5 cities using a dropdown menu. After completing their selection, a button next to the dropdown menu will be coded with a callback function that: (PART 1) returns the html code for the city's 7-day forecast in an editable text field below; and (PART 2) returns the text from the forecast in a multiline text area. See the photos below for reference:
This is the code I have for PART 1 and it seems to work fine:
% Button pushed function: SEARCHWEBButton
function SEARCHWEBButtonPushed(app, event)
app.geosearch = app.CityDropDown.Value;
app.TORn = 'Toronto';
app.OTTn = 'Ottawa';
app.MISSn = 'Mississauga';
app.BRMPn = 'Brampton';
app.HMLTn = 'Hamilton';
app.TORu = 'https://weather.gc.ca/city/pages/on-143_metric_e.html';
app.OTTu = 'https://weather.gc.ca/city/pages/on-118_metric_e.html';
app.MISSu = 'https://weather.gc.ca/city/pages/on-24_metric_e.html';
app.BRMPu = 'https://www.weather.gc.ca/city/pages/on-4_metric_e.html';
app.HMLTu = 'https://weather.gc.ca/city/pages/on-77_metric_e.html';
% Concatenate City Names & URLs
app.CityName = {app.TORn;app.OTTn;app.MISSn;app.BRMPn;app.HMLTn};
app.CityURL = {app.TORu; app.OTTu; app.MISSu; app.BRMPu; app.HMLTu};
%Join Cities and URLS
app.CityLgd = [app.CityName app.CityURL];
%Index Cell Array for Search Term
app.s01 = app.geosearch;
app.s02 = app.CityLgd(:,1);
app.tf = strcmpi(app.s01,app.s02);
app.tf = find(app.tf);
app.index = app.tf;
app.sURL = char(app.CityLgd(app.index,2));
app.WeatherCANLinkEditField.Value = app.sURL;
The following code is what I have for completing PART 2 (returning the text from the weather report):
url = app.sURL;
code = webread(url);
app.RetrievedDataTextArea.Value = extractHTMLText(code);
However, it seems to fail with each trial. Is there a way to code the GUI to return text from an external HTML page?

Accepted Answer

Sourabh Kondapaka
Sourabh Kondapaka on 10 Feb 2021
The below code can be used as a reference for extracting the data about temperatures:
url = 'https://weather.gc.ca/city/pages/on-143_metric_e.html';
data = webread(url);
tree = htmlTree(data);
pTags = findElement(tree,'p');
textContent = extractHTMLText(pTags);
As @Mario Malic suggested please go through the blog post.
Documentation links:
Similar questions have been answered in the community:
  1 Comment
Chedi Mbaga
Chedi Mbaga on 10 Feb 2021
Thank you so much @Sourabh Kondapaka for the assistance! I had been grappling with this challenge for a while and the code you provided offers the exact functionalities I was looking for.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by