- Download cURL from here (You will either need a Win32 version or a Win64 version, depending on your operating system's architecture).
- Extract the command line tool and put it in Matlab's current directory.
- Install Firebug for Firefox
- In Firefox, navigate to the website you would like to automate the commands for.
- You need to activate Firebug with the plugin button on the toolbar. A window will pop up below.
- Fill out the form/s and hit send or search or whatever to send off the form.
- In Firebug, under "console", look for POST requests. Right click on them and "copy as cURL".
- Past the command into a text editor (I recommend Notepad++) that has a "find and replace" feature. The Matlab editor is sufficient for this task, too.
- Replace all ' in the command with " (the Linux version of cURL uses ' while the Windows version uses " in it's syntax)
- This is where it gets tricky: You need to analyze the cURL code. In Matlab, copy and paste the cURL commands variables in Matlab. Use the concatenation function to make the text more readable.
How to use Matlab to fill in some fields in a website, execute a function of the website and then return a result field?
12 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
I have a concrete question. I want to use matlab to automatically calculate the driving distance between two addresses. Here is a website that provides such calculation:
How can I use matlab to input the fields "start" and "end" and then execute a click on the "Calculate Route" button, then return the "Distance" field result?
0 Kommentare
Antworten (2)
Marc Jakobi
am 9 Okt. 2016
Bearbeitet: Marc Jakobi
am 11 Okt. 2016
I wouldn't recommend internal Matlab functions such as urlread() and urlwrite(). Instead, take a look at cURL:You can use the function system() to control cURL in Matlab. If you don't have experience with the cURL syntax, you can use the Firefox plugin firebug to generate cURL commands.
Here's a rough example of how you would do it:
cmd = ['-curl "https://www.example.com', ...
/more_text_here', ...
/even_more_text_here']
Search the command for the text you put into the forms (WARNING: Be careful not to accidentally reveal any login information or other sensitive information!)
You can use concatenation to turn those strings into variables. For example, I would like to send a request repeatedly for data of various dates.
cmd1 = ['-curl "https://example.com/more_curl_command/',...];
cmd2 = datestr(timestamp(i), 'dd.mm.yyyy'); % replace part of command containing the input with a variable
cmd3 = ['+-hstart+0+-hstop+24+-hinc+0.25', rest_of_command];
[status, cmdout] = system([cmd1, cmd2, cmd3]);
If you find something like a sessionID in the first command output "cmdout", you may need to extract that and replace all sessionIDs in any further commands with the one returned in cmdout.
That's pretty much it. I would suggest you give it a try. It will take some time to figure out, but once you do, it works quite reliably. With a little practice, you can automate almost everything you can do using a browser.
3 Kommentare
Jayesh Khatri
am 12 Mär. 2019
Hey Marc
Since the 'firebug' has been discontinued by Firefox since 2017, do you know any other solution for the exact same problem?
Thanks in advance.
Andrew Short
am 18 Aug. 2019
Thanks Marc for this super useful method!
@Dashao Luo: newer versions of MATLAB already have cURL capabilities. You can do [~,status] = system('cURL ...');, then examine status; it should have the commands you entered in the form (if it's not xhl, or other more modern web interfaces).
@Jayesh Khatri: the firefox web developer version has all the old firebug tools. You can go to the "three horizontal lines" tab in the top right, select web developer, and select Network, then find the Post command there. You can right click the Post command (or any command) and copy as cURL, then go from there.
Dashao Luo
am 10 Okt. 2016
2 Kommentare
Marc Jakobi
am 11 Okt. 2016
I updated my answer with a step by step guide. I can't send you an exact example, because it does involve a lot of analyzing of commands, requests and returns, which takes a long time.
P. S. please use the comment function to reply to answers in this forum.
Siehe auch
Kategorien
Mehr zu Web Services finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!