2017-10-04 157 views
-1

你好,我是Python新手,想弄清楚爲什麼我的列表每當新的頁面在while循環中被加載和刮取時都會覆蓋前面的元素。先謝謝你。Python - 之前的列表元素在while循環期間被新元素覆蓋

def scrapeurls(): 
    domain = "https://domain234dd.com" 
    count = 0 

    while count < 10: 

     page = requests.get("{}{}".format(domain, count)) 
     soup = BeautifulSoup(page.content, 'html.parser') 
     data = soup.findAll('div', attrs={'class': 'video'}) 

     urls = [] 

     for div in data: 
      links = div.findAll('a') 
      for a in links: 
       urls.append(a['href']) 
       print(a['href']) 

     print(count) 
     count += 1 
+2

舉動'urls'列表出來的'while'循環 – RomanPerekhrest

+0

感謝,嚴重的小白錯誤 – MethodMan

回答

3

因爲您在每次迭代循環中將urls重置爲空列表。你應該把它移到循環之前。

(注意,整個事情會更好表示爲一個循環。)

+1

哇即時白癡,太感謝你了 – MethodMan

3

您需要循環之前初始化URL列表。如果你在循環中初始化它,它會將它設置爲每次都沒有。

+0

哈哈不,我是初學者太我花了一個多小時昨天困惑因爲我的聲明不會打開文件。我忘了在()'之前打開。大聲笑它發生在每個人。 (我希望) – Dan

1
domain = "https://domain234dd.com" 
count = 0 

urls = [] 
while count < 10: 

    page = requests.get("{}{}".format(domain, count)) 
    soup = BeautifulSoup(page.content, 'html.parser') 
    data = soup.findAll('div', attrs={'class': 'video'}) 

    for div in data: 
     links = div.findAll('a') 
     for a in links: 
      urls.append(a['href']) 
      print(a['href']) 

    print(count) 
    count += 1