您好,登錄后才能下訂單哦!
如何在Python中使用CSV文件模塊?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
1、CSV模塊使用流程
導入模塊
impport CSV
2、打開文件(xxx.csv)
with open('xxx.csv','a',encoding='utf-8') as f:
1、a和 a+ ‘追加'功能
a 追加寫
a+ 追加寫讀(先寫后讀)
2、r 和 r+
r 只讀
r+讀寫,先讀后寫
3、w,w+
w 只寫
w+寫讀 先寫后讀
3、初始化寫入對象
writer = csv.wirter()
4、寫入數據
writer.writerow(['孫悟空', '蘭陵王'])
案例:
貓眼電影top10榜單的爬取
1、網址:url
2、目標:爬取自己想要的文件
3、保存本地:csv文件
4、步驟
1、找url規律
第一頁:https://maoyan.com/board/4?offset=0
第4頁:https://maoyan.com/board/4?offset=30
第n頁:offset=(n-1)*10
2、寫正則表達式
'<div class="movie-item-info".*?title="(.*?)".*?class="star">(.* ?)</p>.*?class="releasetime">(.*?)</p>',re.S
練習:爬取貓王top10信息
from urllib import request import re import time import csv class MaoyanSpider(object): def __init__(self): self.headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"} self.page = 1 # 用來計數 def get_page(self, url): req = request.Request(url, headers=self.headers) res = request.urlopen(req) html = res.read().decode('utf-8') # 直接調用解析函數 self.parse_page(html) def parse_page(self,html): p=re.compile('<div class="movie-item-info">.*?title="(.*?)".*?class="star">(.*?)</p>.*?class="releasetime">(.*?)</p>',re.S) #p=re.compile('<div class="movie-item-info">.*?title="(.*?)".*?class="star">(.* ?)</p>.*?class="releasetime">(.*?)</p>',re.S) r_list = p.findall(html) # 直接調用保存函數 # r_list:[('霸王別姬','張國榮','1993'),(),()] self.write_csv(r_list) # 保存數據函數 def write_csv(self,r_list): with open('貓眼電影top10.csv','a') as f: writer = csv.writer(f) # 依次寫入每個電影信息 for r_t in r_list: film = [ r_t[0].strip(), r_t[1].strip(), r_t[2].strip() ] writer.writerow(film) #主函數 def work_om(self): for pn in range(0,41,10): url = 'https://maoyan.com/board/4?offset=%s'%str(pn) self.get_page(url) print('第%d頁爬取成功'%self.page) self.page += 1 time.sleep(4) if __name__ =='__main__': begin = time.time() spider = MaoyanSpider() spider.work_om() end = time.time() print("執行時間%.2f"%(end - begin))
運行截圖:
關于如何在Python中使用CSV文件模塊問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。