2017-10-04 6 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

おかげで、深刻なnoobの誤差が – MethodMan

答えて

3

ループの繰り返しごとにurlsを空のリストにリセットするためです。ループの前に移動する必要があります。

(注、全部が良いforループのように表現されます。)

+1

すごい馬鹿イム、母がない私は初心者だあまりにも私は昨日時間以上費やし混乱そんなに – MethodMan

3

あなたがループする前にURLのリストを初期化する必要があります。ループ内で初期化すると、毎回何も戻されません。

+0

に感謝私のwith文がファイルを開かないためです。私は() 'の前にopenをタイプすることを忘れていました。笑それは誰にも起こる。 (私は願います) – 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