1. 程式人生 > 其它 >python爬蟲學習(一)request、re、csv豆瓣top250案例

python爬蟲學習(一)request、re、csv豆瓣top250案例

思路:通過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'&nbsp.*?<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()