使用re模塊爬取豆瓣Top250電影資訊
爬蟲四步原理:
1.發送請求:requests
2.獲取相應資料:對方及其直接回傳
3.決議并提取想要的資料:re
4.保存提取后的資料:with open()檔案處理
爬蟲三步曲:
1.發送請求
2.決議資料
3.保存資料
注意:豆瓣網頁爬蟲必須使用請求頭,否則服務器不予回傳資料
import re import requests # 爬蟲三部曲: # 1.獲取請求 def get_data(url, headers): response = requests.get(url, headers=headers) # 如果爬取的是html文本就是用.text方法獲取文本資料,如果爬取的是音視頻就用.content方法獲取二進制流資料 # print(response.text) # 獲取相應文本,比如html代碼 return response.text # 2.決議資料 def parser_data(text): # re.findall("正則運算式", "過濾的文本", re.S) # 匹配模式:re.S 全域模式 data =https://www.cnblogs.com/jsxxd/archive/2020/10/19/ re.findall( '<div >.*?<a href="https://www.cnblogs.com/jsxxd/archive/2020/10/19/(.*?)">.*?<span >(.*?)</span>.*?<span property="v:average">(.*?)</span>.*?<span>(.*?)人評價</span>', text, re.S) for move_info in data: yield move_info # 3.保存資料 def save_data(res_list_iter): with open("豆瓣TOP250.txt", "a", encoding="utf-8") as f: for i in res_list_iter: move_page, move_title, move_score, move_evaluation = i # print(move_page, move_title, move_score, move_evaluation) str1 = f"電影名字:《{move_title}》 電影評分:{move_score} 電影評價:{move_evaluation} 電影詳情頁:{move_page}\n" f.write(str1) # 使用請求頭請求資料 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 \ Safari/537.36' } n = 0 # 獲取10個鏈接 for i in range(10): url = f"https://movie.douban.com/top250?start={n}&filter==" n += 25 text = get_data(url, headers) res_list_iter = parser_data(text) save_data(res_list_iter)
執行結果:

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/180906.html
標籤:其他
