我正在抓取数据的IMDB页面,但在尝试将其写入CSV文件时,我只从结果中获取最后一行。
代码下方:
AttachDbFileName=
我正在使用Anaconda& Spyder的。为了看到youtube之后对我的爱,在google上搜索,我仍然无法理解为什么在地狱中它不是一个接一个地写入所有行。谢谢!
答案 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()