1 ''' 2 主頁: 3 https://movie.douban.com/top250 4 GET 5 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36 6 7 re正則: 8 # PS: 電影詳情頁url、圖片鏈接、電影名稱、導演、主演、電影上映時間、電影評分、評價人數、簡介 9 <div class="item">.*?href="(.*?)">.*?src="(.*?)" class="">.*?<span class="title">(.*?)</span>.*?導演:(.*?).*?主演: (.*?) /...<br>(.*?)</p>.*?content="(.*?)"></span><span>(.*?)人評價.*?<span class="inq">(.*?)</span> 10 ''' 11 ''' 12 每一頁URL: 13 第一頁:https://movie.douban.com/top250 14 第二頁:https://movie.douban.com/top250?start=25&filter= 15 第三頁:https://movie.douban.com/top250?start=50&filter= 16 ..... 17 第九頁:https://movie.douban.com/top250?start=200&filter= 18 第十頁:https://movie.douban.com/top250?start=225&filter= 19 ''' 20 21 import requests 22 import re 23 #請求頭 24 headers={ 25 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.90 Safari/537.36' 26 } 27 28 base_url='https://movie.douban.com/top250?start={}&filter=' 29 num=0 30 for i in range(10): 31 url=base_url.format(i) 32 num+=25 33 print(url) 34 35 #1、往豆瓣發送請求 36 response=requests.get(url,headers=headers) 37 38 # 2、通過正則解析提取數據 39 # PS: 電影詳情頁url、圖片鏈接、電影名稱、導演、主演、電影上映時間、電影評分、評價人數、簡介 40 movie_content_list=re.findall('<div class="item">.*?href="(.*?)">.*?src="(.*?)" class="">.*?<span class="title">(.*?)</span>.*?<div class="bd">.*?導演:(.*?)<br>(.*?)</p>.*?<span class="rating_num".*?>(.*?)</span>.*?<span>(.*?)人評價.*?<span class="inq">(.*?)</span>', 41 response.text,re.S) 42 #解壓賦值每一部電影 43 for move_content in movie_content_list: 44 detail_url,image_url,movie_name,acters,movie_time,movie_grade,number,content=move_content 45 detail_data=f'電影url:{detail_url}, 圖片鏈接:{image_url}, 電影名稱:{movie_name}, 導演和主演:{acters},電影上映時間:{movie_time},電影評分:{movie_grade},評價人數:{number},簡介:{content}\n' 46 print(detail_data) 47 48 #保存數據 49 with open('douban.txt','a',encoding='utf-8')as f: 50 f.write(detail_data)