我正在努力刮擦&打印存储在变量中的所有页面但由于某种原因,只写入最后一页的结果。 在我的代码下面
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 :(得分:1)
您应该使用a
参数打开文件,以附加到该文件。
每次使用w
打开它时,它都会覆盖该文件。因此,只有最后写的东西出现在最后。
f = open(filename,"a")
你应该在循环之前打开文件,然后关闭它。因此,您不会花费所有时间来打开/关闭它。