Python脚本没有在新行中写入结果 - 新手

时间:2017-10-12 18:20:55

标签: python html css csv

我正在抓取数据的IMDB页面,但在尝试将其写入CSV文件时,我只从结果中获取最后一行。

代码下方:

AttachDbFileName=

我正在使用Anaconda& Spyder的。为了看到youtube之后对我的爱,在google上搜索,我仍然无法理解为什么在地狱中它不是一个接一个地写入所有行。谢谢!

2 个答案:

答案 0 :(得分:1)

在for循环下添加你的f.write行。即添加缩进以匹配for循环体。

答案 1 :(得分:1)

你的f.write在你的for循环之外,所以它只写了最后一行。这应该有效:

from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup
my_url='http://www.imdb.com/search/title?genres=sci_fi&title_type=feature&sort=user_rating,desc'
uClient = uReq(my_url)
page_html=uClient.read()
uClient.close()
page_soup=soup(page_html,"html.parser")

images=page_soup.findAll("div",{"class":"lister-item-image float-left"})

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

filename="scifi.csv"
f=open(filename,"w")

headers="order, title, year"'\n'

f.write(headers)

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

   atitle=container.h3.findAll("a")
   title=atitle[0].text

   date=container.h3.findAll("span",{"class":"lister-item-year text-muted unbold"})
   year=date[0].text
   print("order:" + order)
   print("title:" + title)
   print("year:" + year)
   f.write(order + "," +title+ "," +year + '\n')

f.close()