0111編程-Python爬取豆瓣電影

點(diǎn)擊這里進(jìn)入人工智能嘚吧嘚目錄镜盯,觀看全部文章


以前未登錄情況下爬取豆瓣網(wǎng)電影頁面沒遇到過限制,但最近請求頻繁時候?qū)е路祷谾orbidden 403服務(wù)器拒絕響應(yīng)的情況揩页,暫時可行的方法是正常在頁面登錄注冊旷偿,然后請求Requests攜帶header信息發(fā)送請求,適當(dāng)放慢請求頻率爆侣。

解析復(fù)制到的Request header字符串

先從瀏覽器控制臺復(fù)制到請求頭萍程,然后利用函數(shù)str2dict解析成dict格式,稍后發(fā)送請求時候需要使用到累提。

#使用headers,不使用的話頻率稍高就會返回繁忙403
header_str='''
GET /top250 HTTP/1.1
Host: movie.douban.com
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Referer: https://movie.douban.com/chart
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7
Cookie: __utmc=223455111; __utmz=234495111.1512303343....106952.
'''
def str2dict(s,s1=';',s2='='):
    li=s.split(s1)
    res={}
    for kv in li:
        li2=kv.split(s2)
        if len(li2)>1:
            res[li2[0]]=li2[1]
    return res
headers=str2dict(header_str,'\n',': ')

發(fā)送請求

發(fā)送請求獲取Top250電影名稱和年份信息

import requests
from bs4 import BeautifulSoup
import time

top250=[]

url = 'https://movie.douban.com/top250?start='

for i in range(10):
    print('processing page',i)
    purl = url + str(i * 25)
    res = requests.get(purl,headers=headers)
    soup = BeautifulSoup(res.text)
    movies = soup.find_all('div', 'info')
    for mov in movies:
        title = mov.find('span', 'title').text
        yearTag = mov.find('div', 'bd').find('p').contents[2]
        year = yearTag.split('/')[0].strip()
        top250.append({
            'title':title,
            'year':year
        })
    time.sleep(1)
print(len(top250),top250[:3])

直接使用API拉取JSON數(shù)據(jù)

原本豆瓣還提供了一些用于第三方開發(fā)者讀取數(shù)據(jù)的接口API尘喝,可以通過這些API直接讀取數(shù)據(jù),目前官方已經(jīng)停止這些接口的維護(hù)斋陪,是否能持續(xù)繼續(xù)使用也是未知的朽褪。
以下代碼可以一次性獲取TOP250的完整JSON格式數(shù)據(jù)置吓。
注意最后的ensure_ascii為False表示其中包含非ascii碼漢字,如果不使用ensure_ascii參數(shù)將輸出字母亂碼。

#使用API
import requests
import json
import time

top250 = []

api = 'http://api.douban.com/v2/movie/top250?start=0&count=250'

res = requests.get(api)
movies = json.loads(res.text)['subjects']
print(json.dumps(movies[0], indent=2, ensure_ascii=False))

繪制佳片的年代分布

使用plotly進(jìn)行繪圖缔赠。

import plotly.offline as py
import plotly.graph_objs as go
py.init_notebook_mode()
movies_dict={}
for mov in top250:
    year=mov['year'][:4]
    if year in movies_dict:
        movies_dict[year]+=1
    else:
        movies_dict[year]=1
data=go.Bar(
    x=[year for year in movies_dict],
    y=[movies_dict[year] for year in movies_dict]
)
fig=go.FigureWidget([data])
fig

點(diǎn)擊這里進(jìn)入人工智能DBD嘚吧嘚目錄衍锚,觀看全部文章


每個人的智能新時代

如果您發(fā)現(xiàn)文章錯誤,請不吝留言指正嗤堰;
如果您覺得有用戴质,請點(diǎn)喜歡;
如果您覺得很有用踢匣,歡迎轉(zhuǎn)載~


END

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末告匠,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子离唬,更是在濱河造成了極大的恐慌后专,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件输莺,死亡現(xiàn)場離奇詭異戚哎,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)嫂用,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進(jìn)店門型凳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人嘱函,你說我怎么就攤上這事甘畅。” “怎么了实夹?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵橄浓,是天一觀的道長。 經(jīng)常有香客問我亮航,道長,這世上最難降的妖魔是什么匀们? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任缴淋,我火速辦了婚禮,結(jié)果婚禮上泄朴,老公的妹妹穿的比我還像新娘重抖。我一直安慰自己,他們只是感情好祖灰,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布钟沛。 她就那樣靜靜地躺著,像睡著了一般局扶。 火紅的嫁衣襯著肌膚如雪恨统。 梳的紋絲不亂的頭發(fā)上叁扫,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天,我揣著相機(jī)與錄音畜埋,去河邊找鬼莫绣。 笑死,一個胖子當(dāng)著我的面吹牛悠鞍,可吹牛的內(nèi)容都是我干的对室。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼咖祭,長吁一口氣:“原來是場噩夢啊……” “哼掩宜!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起么翰,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤锭亏,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后硬鞍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體慧瘤,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年固该,在試婚紗的時候發(fā)現(xiàn)自己被綠了锅减。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡伐坏,死狀恐怖怔匣,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情桦沉,我是刑警寧澤每瞒,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站纯露,受9級特大地震影響剿骨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜埠褪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一浓利、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧钞速,春花似錦贷掖、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至驾凶,卻和暖如春牙甫,著一層夾襖步出監(jiān)牢的瞬間掷酗,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工腹暖, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留汇在,地道東北人。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓脏答,卻偏偏與公主長得像糕殉,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子殖告,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評論 2 355