2017-10-13 57 views
0

我想抓&打印存儲在變量中的所有頁面,但由於某種原因,只有最後一頁結果被寫入。 下面我的代碼提前Python抓取只檢索最後一頁 - 新手

from urllib.request import urlopen as oPen 
from bs4 import BeautifulSoup as soup 
import requests 



for i in range(1,3): 
     myurl='http://www.imdb.com/search/title?genres=sci_fi&title_type=feature&sort=moviemeter,asc&page=' + str(i) + '&ref_=adv_nxt' 
     r = requests.get(myurl) 
     page_soup = soup(r.content,"html.parser") 
     uClient = oPen(myurl) 
     page_html = uClient.read() 
     uClient.close() 



     containers=page_soup.findAll("div",{"class":"lister-item mode-advanced"}) 


     filename = "test.csv" 
     f = open(filename,"w") 
     headers="numbers\n" 
     f.write(headers) 

     for container in containers: 


         nr=container.findAll("span",{"class":"lister-item-index unbold text-primary"}) 
         number=nr[0].text 






         x=(number + "," '\n') 
         f.write(x)                
     f.close() 

謝謝!

+0

'f = open(filenamme,「a +」)',使用*** a + ***代替*** w *** – Stack

+0

我沒有看到任何從文件中讀取的內容,所以不需要'+'。只是''一個''會做。 – glibdud

+0

某處有這樣的問題必須有一個愚蠢的目標,但我似乎無法找到它... – glibdud

回答

1

您應該用a參數打開文件,以追加到文件。 每次用w打開它時,它都會覆蓋文件。因此,只有最後一件東西寫在它的末尾。

f = open(filename,"a") 

而且你應該在循環之前打開文件,並關閉它之後。因此,你不用花時間打開/關閉它。