豆瓣電影數據爬取源碼(爬蟲豆瓣熱度排名前100的電影名稱和評分以及在豆瓣的地址)
2023-07-12 20:11:18 1
'''
動態網頁爬蟲技術——API請求
採用尋找API並傳遞有效參數重放API的方法,是一個很通用的方法,在很多網站都可以使用。
優點:速度快,結果精簡
案例:提取豆瓣熱度排名前100的電影名稱和評分以及在豆瓣的地址
'''
爬蟲豆瓣熱榜TOP最終結果
import requestsimport jsonimport pandas as pddef page_pachong: content_res1 = [] for i in range(5): print('第' str(i 1) '頁開始……') page_start = str(i*20) #注釋1:一頁有20條數據,爬取100條,而page_start起始為0,因此用一個i,從0到4循環5次,後面URL是個字符串類型,這裡用str方法進行類型轉換,轉成str類型,方便後面調用 url = 'https://movie.douban.com/j/search_subjects?type=movie&tag=熱門&sort=recommend&page_limit=20&page_start=' page_start #注釋2:每一次循環只改變page_start的值,所以每次在最後修改這個值 headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36'} requests.packages.urllib3.disable_warnings #加上這行代碼即可,關閉安全請求警告(出現警告是由於下面參數verify:Ture/False,默認是Ture,用於驗證SSL證書開關) response = requests.get(url=url,headers=headers,verify=False) content = response.content.decode print(content) content_list = json.loads(content)['subjects'] #注釋3:返回的content經過decode方法解碼,變成字符串類型,得到json格式的字符串,用loads方法,將content解析成一個字典格式的內容,存儲在content_list,最後加上「['subjects']」是用來解析內容,不是所有內容都這麼寫 # #json模塊有兩個主要方法——json.loads和json.dumps,前一個是用來解碼JSON數據的,後一個是編碼JSON數據的 for item in content_list: #注釋4:content_list數組對象,做一個循環分支,分條提取 title = item['title'] #注釋5:每條數據是字典類型的對象,寫對應的Key名得到想要的值,這裡得到電影的名稱 rate = item['rate'] #注釋6:這裡得到電影的評分 link = item['url'] #注釋7:這裡得到電影的豆瓣連結 print(title, rate, link) content_res = {"title":title,"rate":rate,"link":link} content_res1.append(content_res) return content_res1def save_excel(content_res1): pf = pd.DataFrame(content_res1) order = ["title","rate","link"] #指定列的順序 pf = pf[order] file_path = pd.ExcelWriter('tongji_reslut.xlsx') #打開excel文件 pf.fillna(' ',inplace=True) #替換空單元格 pf.to_excel(file_path, encoding='utf-8', index=False,) file_path.savecontent_res1 = page_pachongsave_excel(content_res1)
,