python爬蟲學習(一)request、re、csv豆瓣top250案例
阿新 • • 發佈:2021-06-23
思路:通過requests獲取html前端程式碼,通過re進行正則匹配,最後儲存進csv中
首先匯入requests、re、csv
之後再定義一個爬取的方法函式,通過觀察url請求發現引數有start和filter,發現傳遞的引數中以25作為基準,所以在這裡定義一個方法用來傳遞引數
def get_data(num): param = { "start": num, "filter": "" }
url = "https://movie.douban.com/top250" header = { "User-Agent": "XXXXXXXXXXXXXXXXX" } res = requests.get(url = url,headers = header,params = param) page_content = res.text #解析資料 obj = re.compile(r'<li>.*?<div class="item">.*?<span class="title">(?P<name>.*?)' r'</span>.*?<p class="">.*?<br>(?P<year>.*?)' r' .*?<span class="rating_num" property="v:average">(?P<rate>.*?)' r'</span>.*?<span>(?P<com>.*?)</span>',re.S) res = obj.finditer(page_content) f = open("doubantop250.csv",mode="a+",newline="") csv_writer= csv.writer(f) for i in res: #將資料儲存字典中 dic = i.groupdict() #單獨處理year因為含有空格 dic['year'] = dic['year'].strip() #print(i.group("name")) #print(i.group("year").strip()) #print(i.group("rate")) #print(i.group("com")) print(dic.values()) #將字典裡的內容寫入csv檔案中 csv_writer.writerow(dic.values()) f.close()
對於csv檔案來說寫入資料會出現一個空行,此時需要加上
newline=""
將資料儲存進字典中需要通過
groupdict
對於檔案的讀寫如果要累計新增內容需要用a+或a、w會覆蓋
最後再執行迴圈遍歷10次獲取250個排行榜資料儲存進csv檔案中
def start(): for test in range(10): get_data(test) if __name__ == "__main__": start()