Objective-C: HTML Websites - iphone

I was told to retrieve data from this website on traffic in Sao Paolo, Brazil:
http://www.cetsp.com.br
I have to retrieve information which is displayed all over the place, including other links/parts of the site. Im not so sure how. I have to parse HTML and have found a tutorial which does so, but it does not teach me how to parse this website, or any other in particular.
If you go to that website you will see four squares saying North, South, East West and the KM of their traffic or something, I have to gather that data and information. But how !? And also, I have to get the map image of traffic from this site:
http://www.cetsp.com.br/transito-agora/leste/mapa-de-fluidez.aspx
Again, but how? I have the HTML parsing classes hpple. Here is the code I know so far:
NSURL *tutorialsUrl = [NSURL URLWithString:#"http://www.cetsp.com.br"];
NSData *tutorialsHtmlData = [NSData dataWithContentsOfURL:tutorialsUrl];
TFHpple *tutorialsParser = [TFHpple hppleWithHTMLData:tutorialsHtmlData];
So I'm really boggled on how to even start on this. If anyone could help me, that would be great!

For every piece of data you want, you're going to need to write some code to retrieve that data from the document tree in the HTML.
The first step is to open the site in Safari/Chrome's web inspector and get a feel for where in the tree the data you want is.
Next, you'll want to write code to navigate to that point in the document tree and pull that data out. Whenever I've had to do something like this I've been spoiled by being able to use a language like python that has a lot of modules available to accomplish this. I'm not super familiar with what Cocoa has available in this area, but have a look at:
http://www.raywenderlich.com/14172/how-to-parse-html-on-ios
Ray has provided a pretty good worked example that should get you up and running. Perhaps you've already seen this article, in which case you're well on your way. You just need to find your paths thru the document to the elements you need.

Related

How can I program a button on an Access form to link to a browser window that looks up multiple addresses on Google Maps?

My problem is very similar to the one posted here:
http://www.utteraccess.com/forum/Plotting-Addresses-Maps-t1968130.html
except that thread never found any solutions. Basically, I'm working on an Access form that has a datasheet as a subform. Upon clicking a button on the main form I'm trying to make it so that a browser window opens up and, using the address columns from the spreadsheet data in the subform, plot all the address markers listed. I've looked up a lot of ways to attempt this but I've yet to find a way that seems to work.
I'm not even sure if it's possible to plot multiple markers on Google Maps, but according to research (and after trying it myself) it seems like it isn't, although I don't want to rule it out entirely because I'm still not 100% sure. However I know both Google Earth and batchgeo.com do allow this. I still want to try and do this on Google Maps, but if that doesn't work I want to try to do it using batchgeo.com and if that still doesn't work, then Google Earth (I don't want to make the user download external software if possible).
If it helps, from what I've read API's seem like a useful tool, though I'm not sure how to apply it to an Access form, it seems more like a way to embed to already existing websites.
I'd really appreciate if someone could help me figure out how to approach this problem!
Maybe this would help?
http://ramblings.mcpher.com/Home/excelquirks/getmaps/mapmarkers
It is Excel but should be translatable.
Here is another example, this time using Access:
http://www.utteraccess.com/forum/Google-Maps-Multiple-Mar-t1973499.html
...from what I've read API's seem like a useful tool, though I'm not
sure how to apply it to an Access form, it seems more like a way to
embed to already existing websites.
You're right. There's no way, that I'm aware of, to embed a Google Maps object in a form (like an ActiveX control). Microsoft MapPoint is a software product that lets you do Map integration by way of an ActiveX control (no need to use HTML and/or javascript).
What I usually do on a project like you're working on is I get my HTML page working the way I want it to, outside and independent of MS Access. You should be able to program and test the HTML file locally without having to use an actual web server. Just use something like NotePad++ or Sublime Text Editor 2 to write your HTML and Javascript and then open the file in your browser to see if it works. I'm quite sure you'll need to use Javascript in your HTML page to make this work. That's what the Google Maps API is all about.
After you have your webpage working, then you will have to go into Access and write code to create that web page on the fly with the address data for the current data set. You can just write it out to the Windows Temp folder and then open your browser control that that web page.
Julian Knight's answer links to more specifics on how to create the HTML page on the fly. It looks like gobble-de-gook, mostly because it is. Outputting HTML/Javascript/CSS from VBA is far less than optimal. This is why you troubleshoot it outside of Access, as much as you can.

How to Delete nodes from HTML in iOS

What I am trying to do is to load a webpage into in a UIWebView. The problem is that I need to do some preprocessing on the html before displaying it in the web view.
The UIWebview loadHTMLString is quiet slow when the html is big. I don't need to display the full page therefore i am trying to remove some html nodes before displaying it in the web view to speed up the loading time.
I don't think using regex for that is a wise idea. I checked out NSXMLParser and TFHPPLE but I couldn't find any way to remove nodes from the html tree using an XPath or something.
I know I could do that using Javascript but that won't solve my problem. I also don't have no control on the website so I can't edit in the webpage itself.
Is there something as easy as deleteNodeUsingXPath or something :)
Cheers and thanks a lot for your help in advance.
One possibility solution: do a proxy website which strips out unwanted stuff. The iphone accesses the proxy website URL. The proxy website loads from the original website, strips out unwanted stuff, and replies with the remaining stuff.
There is a tool called Objective-C-HTML-Parser that will do what you are looking for. The documentation is thorough, and the implementation is pretty straight-forward.
Basically, you take your HTML string and make an HTMLParser object that you can then manipulate however you want. It is a very powerful library that basically lets you do whatever you want with HTML with easy-to-use Objective-C APIs.
Good luck!

JSON iphone help desperately needed

Hi desperate newbie in need of direction! Well I say newbie, I have almost built myself the app I set out to achieve, a tableview to display story titles from my website, that when touched using the navigation controller slides to the story/article.
Only problem is that I only have test data that is embedded into my views as an array (which is no good to me). I need this data to come from my website, www.theknowledgeoflondon.com. I want to take the title to display in the tableview and then when touch it slide to the actual article.
Been reading up and believe that JSON could be the answer or XML? I do not have a clue on this subject and if I thought learning object c and coco touch was hard this JSON OR XML thing seems to be a new world of PAIN for me!!! and there doesn’t seem to be anything by way of good tutorials out there for someone that has not a clue on the subject. My data is drawn from a simple MySql table from a php script and was hoping there is an easy way to feed this into my table view?
Would be very greatful for any information on a good way forward. Have already downloaded SBJson, but then read that JSONTouch is a good alternative to use. Or should I be using straight XML. Any help and good tutorials would be much appriciated.
Thanks you in advance.
Steve
I made an app last week that uses XML and I found it the easier way of doing what you want to do. But I found an awesome tutorial that I believe is perfect for what you are trying to do. It helps you create the web service needed and teaches you how to access the data that you wish to access.
http://www.raywenderlich.com/2941/how-to-write-a-simple-phpmysql-web-service-for-an-ios-app
and also check
http://www.raywenderlich.com/2965/how-to-write-an-ios-app-that-uses-a-web-service
And for even more information on web related subjects also have a look at www.w3schools.com it is an amazing website dedicated to teach about web technologies such as XML and the like.
Hope it helps you as much as it has helped me.
If you have the option to choose then I will suggest to use plist format. Open a plist file with a plain text editor. You will find that that is actually a XML file. The big advantage of using plist is that you don't need another parser. You can convert a plist file directly to NSArray using arrayWithContentsOfFile or arrayWithContentsOfURL or convert them directly to NSDictionary by using similar methods. And you can create them using plist editor of Mac easily.

XML Parsing of Multiline tags

I am using XML Parsing in one of my apps. I have not done this before but I observed something weird (or may be now) today. I am trying to locate a business on in my app and their googlemaps link is obviously big
http://maps.google.com/maps?f=q&source=s_q&hl=en&geocode=&q=1001+Fannin+Street,+Houston,+TX&aq=0&sll=37.0625,-95.677068&sspn=36.999937,73.476563&ie=UTF8&hq=&hnear=1001+Fannin+St,+Houston,+Harris,+Texas+77002&z=16.
Every time I load using this link the app crashes. However if I change the link to something like :
http://maps.google.com/?saddr=0000+FM+0000+RD+Houston+TX+77000
the app loads perfectly and works perfect.
I know this is not a problem in my app as I am using this just for reference to something else and not loading the addr in google maps app (as this works with the big link). So I am concluding that there is something wrong in the way I am writing it in my XML.
Please do not direct me to any tools and stuff that shorten the link etc. as I dont want to get in to that. I am sure that I am messing up somewhere in my basics so if some1 tells me what are the basics behind this.
Thank you,
Well if the top link is in XML and hasn't had its ampersands escaped you'll not have well formed XML.
& should be escaped as &

Possible to parse this html with xpath?

I am working on gather sports statistics for a personal hobby project. I found this site with all the info I need:file:///Users/JohnJNichols4/Desktop/view-source%20cluster.leaguestat.com%20download.php%20client_code=ahl&file_path=daily-report%20daily-report.html
Am I able to parse this site with xpath? I only have experience (little experience) with cocoa and xcode, so I am writing this is objective c with a wrapper called hpple. My problem arises when I need to pull info from the tables. I have no idea how to go about this. The xpath expressions that I enter are all wrong. Can anyone show me how one might parse the standings in the first table? The function I am using is:
NSArray *elements = [xpathParser search:#"xpath stuff goes here"];
Thanks a lot!
EDIT URL
Sorry guys, I put up the local URL by mistake. Here is the right one: http://cluster.leaguestat.com/download.php?client_code=ahl&file_path=daily-report/daily-report.html
If you want to treat it as XML, you can, but it'll have to be properly formed, which isn't always the case with HTML. I'd recommend using the TouchXML library, it has great xpath support and a fair amount of documentation and examples.
http://foobarpig.com/iphone/touchxml-installation-guide.html