哈羅有見面了诸蚕,幾天剛剛驗(yàn)收學(xué)校仿站項(xiàng)目步势,就來趕博客,上課趕得哦背犯。
我的爬蟲原則: 爬蟲就要有禮貌坏瘩,爬蟲與反爬蟲的戰(zhàn)爭
很奇妙。呸漠魏,很費(fèi)精神倔矾。話不多說上代碼
'''
這次是抓取豆瓣網(wǎng)的前100部高分影片
本代碼作者:高佳樂
'''
import requests ##導(dǎo)入requests庫
import json ##導(dǎo)入json庫,對json的一個(gè)解析
import time ##還是那句話柱锹,爬蟲要有禮貌
#######################################################定義一個(gè)類##############################################################################
class spring(): ##定義類哪自,
def __init__(self): ##定義構(gòu)造函數(shù)
self.start = 0 ##定義初始開始數(shù)
self.limit = 100 ##初始電影數(shù)量
self.type = 1 ##初始類型,下邊是地址的url
self.url='https://movie.douban.com/j/chart/top_list?type='+str(self.type)+'&interval_id=100%3A90&action=&start='+str(self.start)+'&limit='+str(self.limit)
return
####################################################獲取HTML#################################################################################
def html(self,url): ##定義一個(gè)獲取html_text的方法封裝
html = requests.get(url) ##html是獲取url
html_text = html.text ##html_text是html的寫出
html_text = json.loads(html_text) ##html_text是json解析再一次
# html_text = json.dumps(html_text,sort_keys=True,indent=4,ensure_ascii=False) ##格式化輸出實(shí)驗(yàn)一遍
# for i in html_text: ##循環(huán)輸出以便觀看
# print(i)
return html_text ##返回json解析后的html_text格式
########################################################操作##################################################################################
def select(self): ##這個(gè)方法就是開始解析后的json的格式后然后獲取電影的標(biāo)題禁熏,封面壤巷,分?jǐn)?shù)啥的。
##選擇類型瞧毙,上邊的url是types切換數(shù)字的胧华,type就是電影類型。
self.type = input('請輸入要查詢的代碼,默認(rèn)是紀(jì)錄片:\n1-記錄片宙彪,11-劇情矩动,24-喜劇,5-動(dòng)作释漆,13-愛情悲没,17-科幻,25-動(dòng)畫\n10-懸疑灵汪,19-驚悚檀训,20-恐怖,23-短片享言,6-情色峻凫,26-同性,14-音樂览露,7-歌舞\n28-家庭荧琼,8-兒童,2-傳記,4-歷史命锄,22-戰(zhàn)爭堰乔,3-犯罪,27-西部脐恩,16-奇幻\n15-冒險(xiǎn)镐侯,12-災(zāi)難,29-武俠驶冒,30-古裝苟翻,18-運(yùn)動(dòng),31-黑色電影\n')
print('正在獲取排行榜前100個(gè)電影資料骗污。') ##輸出提示崇猫,本來打算給一個(gè)好看的等待條的狀態(tài),結(jié)果有點(diǎn)問題先這樣吧→_→
i=1 ##這開始就是等待條的代碼
while i<5:
print('·',end='')
time.sleep(0.5)
i+=1
print() ##嘿需忿,這是等待條的結(jié)束诅炉,可以忽略
url = self.url ##url是初始結(jié)構(gòu)的url,通過上邊type合成后的url
html_text = self.html(url) ##獲取后的url的json的格式
for i in html_text: ##因?yàn)楂@取后的會(huì)是一個(gè)列表屋厘,列表里邊是字典涕烧,所以要遍歷輸出字典
##分?jǐn)?shù)和星星
rating = i['rating'] ##字典的訪問方式,字典[鍵]擅这,下邊也是
fenshu = rating[0] ##獲取到的是列表用索引
xing = int(rating[1])/10
##第幾個(gè)
rank = i['rank']
##封面
cover_url = i['cover_url']
##類型
types = i['types']
types = ','.join(types)
##地點(diǎn)
regions = i['regions']
regions = ''.join(regions)
##電影名字
title = i['title']
##詳細(xì)地址
url = i['url']
##時(shí)間
release_date = i['release_date']
##評論人數(shù)
vote_count = i['vote_count']
##演員
actors = i['actors']
actors = ','.join(actors) ##這里的演員返回的是一個(gè)列表澈魄,因?yàn)槭嵌鄠€(gè)演員,所以用join的函數(shù)仲翎,用法就是:連接符.join.列表啥的痹扇,就是用連接符把列表里邊的元素連接
##按格式輸出嘍
print('第%s個(gè):\n封面:%s\n電影名:%s\n演員:%s\n%s-%s-%s\n星星:%s\n分?jǐn)?shù):%s\n評價(jià)人數(shù):%s\n詳情頁面:%s'%(rank,cover_url,title,actors,release_date,regions,types,xing,fenshu,vote_count,url))
##分解線
print('\n','-'*200,'\n')
time.sleep(1) ##爬蟲宗旨:有禮貌,慢慢爬
##########################################################################操作########################################################################
douban = spring()
douban.select()
終于要進(jìn)入抓包解析動(dòng)態(tài)頁面的腳步了溯香,和靜態(tài)頁面感覺很奇妙鲫构。
這會(huì)我也不太熟,就不多說啥了玫坛,怕誤人子弟结笨。
就到這里吧,砸門下次見面湿镀。
-
怎么可能炕吸,效果圖還沒放就再見,我沒放文檔里面勉痴,啊哈哈哈赫模。
- 好了,現(xiàn)在蒸矛,砸門下次再見吧瀑罗。