python爬蟲實踐——爬取“豆瓣top250”


 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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM