2017-10-13 13 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 ***を使用します。*** – Stack

+0

ファイルから何も読んでいないので、 '+'。ちょうど '' a''が行います。 – glibdud

+0

この種の質問のための二重ターゲットがどこかにあるに違いありませんが、私はそれを見つけることができません... – glibdud

答えて

1

ファイルに追加するには、a引数でファイルを開く必要があります。 wで開くたびに、ファイルが上書きされます。したがって、あなたが書き込む最後のものだけが最後に現れます。

f = open(filename,"a") 

ループの前にファイルを開いてから閉じてください。したがって、あなたはそれを開いたり閉じたりするのに時間を費やすことはありません。

関連する問題