Iterating through a list. Upon condition I want to move on to next item in list

MRAB python at mrabarnett.plus.com
Wed May 10 16:46:53 EDT 2017


On 2017-05-10 20:25, aaron.m.weisberg at gmail.com wrote:
> Good afternoon,
> 
> I have a list that I'm iterating thorough in Python.  Each item in the list will have between 1-200 urls associated with it.  My goal is to move on to the next.  I have a variable "associationsCount" that is counting the number of urls and once it gets to 0 i want to move on to the next item on the list and do the same thing.
> 
> As my code stands right now, it counts through the stateList[0] and then when associationsCount gets to 0 it just stops.  I know I need to add another couple lines of code to get it back going again- but I'm not no good at no Python.
> 
> Please advise.
> 
> 
> Here's an example of the code:
> 
> stateList = ['AL','AK','AR','AZ',etc]
> associationsCount = 1
> 
> for state in stateList:
>      
>          while associationsCount > 0:

What is 'counter'? It only ever increases.

>              print(counter)

I wonder whether it's supposed to increase from, say, 1, for each state, 
to get each of a number of pages for each state. (Pages 1, 2, etc. for 
'AL', then pages 1, 2, etc. for 'AK', and so on? If that's the case, 
then how do you know when you have seen the last page?)

>              url = 'url?dp={0}&n=&s={1}&c=&z=&t1=&g='.format(counter,state)
>              print(url)
>              page = requests.get(url)
>              
>              tree = html.fromstring(page.text)
>              s = s + counter
>              counter +=1
>                      
>              associations = tree.xpath('//td//strong/text()')

You're not doing much with 'associationsCount'. Once set, you never 
change it, so the 'while' loop will repeat forever - unless it happens 
to be set to 0, in which case the 'while' loop will never run again!

>              associationsCount = len(associations)
>              print(associationsCount)
> 
>                        
>                  
>              for x in associations:
>                  print(x)
>                  xUrl = 'https://bing.com/search?q={0}'.format(x)
>                  xPage = requests.get(xUrl)
>                  xTree = html.fromstring(xPage.text)
>                  try:
>                      link = xTree.xpath('//li[@class="b_algo"]//a/@href')[0]
>                      print(link)
>                      associationInfo = state, x,link
>                      associationInfoList.append(associationInfo)
>                      
NEVER use a 'bare except' to suppress exceptions! It'll catch _all_ 
exceptions, even NameError (if you've misspelled a name, it'll catch 
that too). Catch only those exceptions that you're prepared to deal with.

>                  except:
>                      pass
> 



More information about the Python-list mailing list