項目托管平臺地址:https://github.com/xyhcq/top250?
開發模塊功能: 寫入文件功能
開發時間:3小時
實現將爬取到的信息寫入到文件中的功能
實現過程:
# 打開文件 f=open("top250.txt","w")
在別的隊員寫的代碼基礎上,加入功能代碼
def getData(html):# 分析代碼信息,提取數據soup = BeautifulSoup(html, "html.parser")# 找到第一個class屬性值為grid_view的ol標簽movieList=soup.find('ol',attrs={'class':'grid_view'})# 找到所有的li標簽for movieLi in movieList.find_all('li'): # 找到第一個class屬性值為hd的div標簽movieHd=movieLi.find('div',attrs={'class':'hd'})# 找到第一個class屬性值為title的span標簽 #也可使用.string方法# 獲取電影名字movieName=movieHd.find('span',attrs={'class':'title'}).getText()print movieNamef.write('電影名:'+movieName.encode('utf-8')+' ')# 獲取電影鏈接movieUrl=movieHd.find('a class="" href="')print movieUrl# 寫入文件f.write('鏈接:'+str(movieUrl)+' ')# 獲取電影導演/演員movieBd = movieLi.find('div', attrs={'class': 'bd'})movieSF=movieBd.find('p',attrs={'class':''}).getText()print movieSF# 寫入文件f.write('Staff:'+movieSF.encode('utf-8')+' ')# 獲取電影的評分movieScore=movieLi.find('span',attrs={'class':'rating_num'}).getText()print movieScore# 寫入文件f.write('評分:'+movieScore.encode('utf-8')+' ')#獲取電影的評論數movieEval=movieLi.find('div',attrs={'class':'star'})movieEvalNum=re.findall(r'\d+',str(movieEval))[-1]print movieEvalNumf.write('評論數:'+movieEvalNum.encode('utf-8')+' ')# 獲取電影短評movieQuote = movieLi.find('span', attrs={'class': 'inq'})# 有的電影沒有短評,為防止報錯,加次if(movieQuote):print movieQuote.getText()# 寫入文件f.write('短評:'+movieQuote.getText().encode('utf-8')+'\n')else:# 寫入文件f.write('短評:'+"這個電影沒有短評"+'\n')
最后
# 關閉文件,否則容易寫入不全 f.close()
遇到的問題:
剛開始寫入文件時會報錯,錯誤提示是不能寫入,后來發現文件編碼不支持ascii,轉換了一下編碼?.encode('utf-8') 就正常了
?