hey mike-the sample code was very useful. have 2 questions when i use what you wrote which is listed below i get told unboundlocalerror: local variable 'product' referenced before assignment. if i however chnage row to incident in "for incident in bs('tr'):" i then get mytuples printed out nicely but once again get a long list of
[('pizza;','pizza hut;', '3.94;')] [('pizza;','pizza hut;', '3.94;')] for row in bs('tr'): data=[] for incident in row('h2', {'id' : 'dealName'}): productlist = [] for oText in incident.fetchText( oRE): productlist.append(oText.strip() + ';') product = ''.join(productlist) for incident in row('a', {'name' : 'D0L3'}): storelist = [] for oText in incident.fetchText( oRE): storelist.append(oText.strip() + ';') store = ''.join(storelist) tuple = (product, store, price) data.append(tuple) print data > [EMAIL PROTECTED] writes: > > hey kent thanks for your help. > > > > so i ended up using a loop but find that i end up getting the same set > > of results every time. the code is here: > > > > for incident in bs('tr'): > > data2 = [] > > for incident in bs('h2', {'id' : 'dealName'}): > > product2 = "" > > for oText in incident.fetchText( oRE): > > product2 += oText.strip() + ';' > > > > > > > > for incident in bs('a', {'name' : 'D0L3'}): > > store2 = "" > > for oText in incident.fetchText( oRE): > > store2 += oText.strip() + ';' > > > > > > for incident in bs('a', {'class' : 'nojs'}): > > price2 = "" > > for oText in incident.fetchText( oRE): > > price2 += oText.strip() + ';' > > > > > > tuple2 = (product2, store2, price2) > > data2.append(tuple2) > > print data2 > > Two things here that are bad in general: > 1) Doing string catenations to build strings. This is slow in > Python. Build lists of strings and join them, as below. > > 2) Using incident as the index variable for all four loops. This is > very confusing, and certainly part of your problem. > > > and i end up getting the following instead of unique results > > > > pizza, pizzahut, 3.94 > > pizza, pizzahut, 3.94 > > pizza, pizzahut, 3.94 > > pizza, pizzahut, 3.94 > > Right. The outer loop doesn't do anything to change what the inner > loops search, so they do the same thing every time through the outer > loop. You want them to search the row returned by the outer loop each > time. > > for row in bs('tr'): > data2 = [] > for incident in row('h2', {'id' :'dealName'}): > product2list = [] > for oText in incident.fetchText(oRE): > product2list.append(OText.strip() + ';') > product2 = ''.join(product2list) > # etc. > > <mike > -- > Mike Meyer <[EMAIL PROTECTED]> > http://www.mired.org/home/mwm/ > Independent WWW/Perforce/FreeBSD/Unix consultant, email for more information. -- http://mail.python.org/mailman/listinfo/python-list