爬虫项目之豆瓣电影排行榜前10页
目錄
一、學習資源:
二、知識點介紹
1、urlib庫的基本使用??
2、使用實例
? ? ? ? ①獲取網頁源碼
? ? ? ? ?②從服務器下載網頁、圖片、視頻
3、UA介紹
? ? ? ? ①簡介
????????②實例
?三、項目詳細講解
? 1、分析
?2、步驟
? ? ? ? (1)請求對象定制
? ? ? ? (2)獲取響應數據
? ? ? ? (3)下載數據
?3、整體思路
四、項目源碼
一、學習資源:
尚硅谷Python爬蟲教程小白零基礎速通(含python基礎+爬蟲案例)_嗶哩嗶哩_bilibili大家記得一鍵三連【點贊、投幣、收藏】感謝支持~本教程適合想掌握爬蟲技術的學習者,以企業(yè)主流版本Python 3.7來講解,內容包括:Python基礎、Urllib、解析(xpath、jsonpath、beautiful)、requests、selenium、Scrapy框架等。針對零基礎的同學可以從頭學起,有Python基礎的同學建議直接從第52集開始學習爬蟲部分視頻。教程中示例多種網站的爬取,https://www.bilibili.com/video/BV1Db4y1m7Ho?p=86
????????這位老師講的很有激情,并知識點和邏輯清晰,強烈推薦
二、知識點介紹
? ? ? ? 1、urlib庫的基本使用?
2、使用實例
? ? ? ? ①獲取網頁源碼
? ? ? ???
? ? ? ? ?②從服務器下載網頁、圖片、視頻
3、UA介紹
? ? ? ? ①簡介
?????????之所以用UA是因為一些網站為了防止用爬蟲去爬取網頁信息所設置的一個檢查機制,服務器要識別客戶的操作系統(tǒng)及版本等數據,但是用正常的爬蟲去爬取就不包含這些信息,所以要進行對象定制,讓服務器以為我們是真的從瀏覽器中訪問的。
????????②實例
?三、項目詳細講解
? 1、分析
? ? ? ? ①首先要獲取url,但是因為要獲取前十頁的數據,url是一個變量,通過對網頁的檢查可以發(fā)現網頁的url有規(guī)律,其起始頁為(page-1)*20,其每頁20個數據。
????????????????????????????????????????????????????????????????????????????????????
? ? ? ? ②然后將data解析為unicode編碼的數據,然后再和起始鏈接組合成為新的鏈接? ? ? ??
?2、步驟
? ? ? ? (1)請求對象定制
? ? ? ? ? ? ? ?解決了url的問題之后,請求對象的定制就變得簡單了,就是把之前的內容進行了封裝
? ? ? ? (2)獲取響應數據
? ? ? ? ? ? ? ? 相應的獲取響應數據也是把之前的代碼進行封裝
? ? ? ? (3)下載數據
? ? ? ? ? ? ? ? 將獲取到的網頁數據寫入文件即可?
?
????????????????文件內容:?
?3、整體思路
? ? ? ? ?①通過一個主程序入口進入,也就是main函數
? ? ? ? ②輸入起始頁碼和結束頁碼
? ? ? ? ③通過循環(huán)遍歷的方式去獲取數據,此處采用for循環(huán),range函數是左閉右開的,所以結束的位置要加1才能到達效果
? ? ? ? ④請求對象定制,用函數實現其功能(create_request),定義函數時不知道其返回值和傳遞值,可以不寫,然后再根據需要去添加。定義函數時發(fā)現需要所處頁面的值,則傳入加上page。
? ? ? ? ⑤獲取相應數據,用函數實現其功能(get_content),同樣的,定義函數時不知道其返回值和傳遞值則先不寫,然后再根據需要去添加。定義函數是發(fā)現需要上一個的對象,則create_request需要返回一個對象(request),把create_request()函數完善
? ? ? ? ?⑥下載數據,存儲到文件中,用函數實現其功能(down_load),同樣的,定義函數時不知道其返回值和傳遞值則先不寫,然后再根據需要去添加。定義函數時發(fā)現需要網頁數據,則get_content需要返回內容,完善get_content函數()。
四、項目源碼
# coding=utf-8 import urllib.request #https://movie.douban.com/j/chart/top_list?type=5&interval_id=100%3A90&action=&start=0&limit=20#https://movie.douban.com/j/chart/top_list?type=5&interval_id=100%3A90&action=&start=20&limit=20#https://movie.douban.com/j/chart/top_list?type=5&interval_id=100%3A90&action=&start=40&limit=20#page 1 2 3 4 #start 0 20 40 60#start=(page-1)*20#下載豆瓣電影前十頁的數據#(1)請求對象的定制 #(2)獲取響應的數據 #(3)下載數據import urllib.parse import urllib.request #(1)請求對象的定制 def create_request(page):base_url='https://movie.douban.com/j/chart/top_list?type=5&interval_id=100%3A90&action=&'data={'start' :(page-1)*20,'limit':20}data = urllib.parse.urlencode(data)#解析data將data變?yōu)閡nicode編碼url = base_url + dataheaders = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"}request = urllib.request.Request(url=url,headers=headers)return request #(2)獲取響應的數據 def get_content(request):response = urllib.request.urlopen(request)content = response.read().decode('utf-8')return content #(3)下載數據 def down_load(page,content):with open('douban_' + str(page) +'.json','w',encoding='utf-8') as fp:fp.write(content) #程序入口 if __name__ == '__main__':start_page = int(input('請輸入起始頁碼'))end_page = int(input('請輸入結束的頁面'))for page in range(start_page,end_page+1) :#左閉右開#每一頁都有自己的請求對象的定制request = create_request(page)#獲取響應的數據content = get_content(request)#下載down_load(page,content)???????
總結
以上是生活随笔為你收集整理的爬虫项目之豆瓣电影排行榜前10页的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 程序的加载和执行(三)——《x86汇编语
- 下一篇: 程序的加载和执行(四)——《x86汇编语