HTTP協議與使用Python擷取資料並寫入MySQL

來源:互聯網
上載者:User

標籤:class   取資料   url   影片   tag   最新   標籤   int   修改   

  一、Http協議

  二、Https協議

  三、使用Python擷取資料

  (1)urlib

  (2)GET請求

  (3)POST請求

  四、爬取豆瓣電影實戰

  1.思路

  (1)在瀏覽器中輸入https://movie.douban.com/j/search_tags?type=movie會得到顯示的電影的分類標籤,下面以“熱門”為例

{"tags":["熱門","最新","經典","可播放","豆瓣高分","冷門佳片","華語","歐美","韓國","日本","動作","喜劇","愛情","科幻","懸疑","恐怖","成長"]}

  (2)在瀏覽器中輸入https://movie.douban.com/進入豆瓣首頁,然後下拉到“最近熱門電影”,然後點擊“更多”,瀏覽器中顯示的url為https://movie.douban.com/explore#!type=movie&tag=熱門&sort=recommend&page_limit=20&page_start=0,即表示熱門電影的第一頁中的20部影片。

  (3)下拉至底部,點擊“顯示更多”一下,則此時的url變為https://movie.douban.com/explore#!type=movie&tag=熱門&sort=recommend&page_limit=20&page_start=20,也就表示第二頁中的20部影片。

  (4)在瀏覽器中輸入下面的url會得到20個json格式的字串:https://movie.douban.com/j/search_subjects?type=movie&tag=熱門&sort=recommend&page_limit=20&page_start=0。

  (5)針對每個url,如果返回的結果中存在資料,那麼就將page_start增加20繼續執行GET請求,直到不再返回資料為止。

  2.代碼實現

import urllib.requestfrom urllib import parseimport json# 獲得全部電影標籤url = ‘https://movie.douban.com/j/search_tags?type=movie‘# 需要將中文漢字轉化成十六進位的形式,否則會報編碼錯誤print(parse.quote(‘熱門‘))request = urllib.request.Request(url=url)response = urllib.request.urlopen(request, timeout=20)# 獲得json形式的字串result = response.read()print(result)# 將json形式的字串解析成字典result = json.loads(result)print(result)# 將取字典的標籤欄位儲存到列表中tags = result[‘tags‘]print(tags)# 定義一個列表格儲存體電影的基本資料movies = []# 分別處理每個tagfor tag in tags:    print(tag)    tag = parse.quote(tag)    print(tag)    start = 0    # 不斷請求,直到返回結果為空白    while True:        # 拼接需要請求的url        url = ‘https://movie.douban.com/j/search_subjects?‘               ‘type=movie&tag=‘ + tag + ‘&sort=recommend&page_limit=20&page_start=‘ + str(start)        print(url)        request = urllib.request.Request(url=url)        response = urllib.request.urlopen(request, timeout=20)        # 獲得json形式的字串        result = response.read()        print(result)        # 將json形式的字串解析成字典        result = json.loads(result)        print(result)        # 將取字典的標籤欄位儲存到列表中        result = result[‘subjects‘]        print(result)        # 迴圈跳出條件        if len(result) ==0:            break        # 將每一條記錄都添加到movies列表中        for item in result:            movies.append(item)        # 修改起始位置,相當於點擊"顯示更多"        start += 20print(len(movies))

 

HTTP協議與使用Python擷取資料並寫入MySQL

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.