Python實現貓眼電影網站視頻爬取,附代碼

學習Python是否感到過度勞累,四肢乏力,腰腿痠痛?這是沒找到學習方法的表現!都知道編程是環環相扣的吧 如果基礎沒學好的話 那麼代碼你是肯定看不懂的~每個技術大牛都是從基礎慢慢的提升上去的,基礎知識越深以後的發展越牛!


Python實現貓眼電影網站視頻爬取,附代碼

這裡還要注意:不管你是剛學Python還是想找python高薪工作,記住:項目實戰永遠是核心,如果你沒有python入門到高級實戰視頻教程,可以關注我,後臺私信我 ‘py’ 自動獲取最新python教程資料!還有老司機解答哦!
思路:1.利用requests去過去網站上的前端源代碼 在源代碼中存在我們想要獲取的數據2.在源代碼中篩選出我們想要的數據 數據篩選 bs43.把篩選出來的數據存放到文件中 保存數據爬蟲的原理:模擬瀏覽器向服務器發送一個get()請求,服務器接收到請求之後返回相應的數據給爬蟲代碼get() 單純的拿數據post() 在拿數據的過程中還能修改數據

Python實現貓眼電影網站視頻爬取,附代碼

對於初學者在學習Python過程中有不懂的或是缺少這方面學習教程的可以加一下我建的Python技術的學習裙;九三七六六七五零九,一起學習。群裡有相關開發工具,學習教程,每天還有專業的老司機在線直播分享知識與技術答疑解惑!

項目源碼

<code>  1 # pip install bs4
  2 from bs4 import BeautifulSoup
  3 
  4 # 網絡請求包 它能獲取到網站上的前端源代碼
  5 
  6 # pip install requests
  7 import requests
  8 
  9 # json 在文件處理中 python沒有辦法把一個對象寫入文件中 字典就是python中的一個對象
 10 import json
 11 
 12 '''
 13 在python中的表現形式
 14     基本數據類型
 15         列表
 16         字典
 17         集合
 18         元組
 19         
 20         字典  {'name': '未襯'} 運用在後端
 21         json {"name": "未襯"} 運用在前端
 22 '''
 23 
 24 '''
 25 思路:
 26     1.利用requests去過去網站上的前端源代碼 在源代碼中存在我們想要獲取的數據
 27     2.在源代碼中篩選出我們想要的數據 數據篩選 bs4
 28     3.把篩選出來的數據存放到文件中 保存數據
 29     
 30     爬蟲的原理:
 31         模擬瀏覽器向服務器發送一個get()請求,服務器接收到請求之後返回相應的數據給爬蟲代碼
 32         
 33         get() 單純的拿數據
 34         post() 在拿數據的過程中還能修改數據
 35 '''
 36 # 這種數據結構是一種典型的字典格式
 37 # 作用 定義瀏覽器
 38 headers = {
 39     'User-Agent':
 40         'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'
 41 }
 42 
 43 
 44 # 獲取請求頁面
 45 '''
 46 url 是一種形式參數
 47     我們去調用getPage()這個函數的時候要去給這個url做賦值
 48 '''
 49 
 50 
 51 def getPage(url):
 52     # 異常處理 保證我們的程序不會因為網絡原因導致程序崩潰
 53     try:
 54         response = requests.get(url, headers=headers)
 55         if response.status_code == 200:
 56             return response.text
 57         else:
 58             return None
 59     except Exception:
 60         return None
 61 
 62 
 63 # 獲取電影信息 pip install lxml
 64 def getInfo(html):
 65     # 使用BeautifulSoup匹配電影的索引 海報 電影名 主演 評分
 66     soup = BeautifulSoup(html, 'lxml')
 67     items = soup.select('dd')
 68 
 69     for item in items:
 70         index = item.find(name='i', class_='board-index').get_text()
 71         name = item.find(name='p', class_='name').get_text()
 72         start = item.find(name='p', class_='star').get_text().strip()
 73         time = item.find(name='p', class_='releasetime').get_text()
 74         score = item.find(name='p', class_='score').get_text()
 75 
 76         # 生成器
 77 
 78         '''
 79         迭代器
 80         生成器
 81         裝飾器
 82         '''
 83 
 84         # 可以把yield看成return 就是專門返回數據的 yield有一種特性 惰性機制
 85         # 它因為這種機制 可以實現節約內存的效果
 86         yield {
 87             'index': index,
 88             'name': name,
 89             'start': start,
 90             'time': time,
 91             'score': score
 92         }
 93 
 94 # 寫入文件
 95 def writeData(field):
 96     # 文件處理
 97     with open('maoyan_info.txt', 'a', encoding='utf-8') as f:
 98         f.write(json.dumps(field, ensure_ascii=False) + '\n')
 99 
100 
101 # 入口函數
102 if __name__ == "__main__":
103     for num in [i * 10 for i in range(11)]:
104         url = 'https://maoyan.com/board/4?offset=' + str(num)
105         html = getPage(url)
106 
107         for item in getInfo(html):
108             print(item)
109             writeData(item)
110 
111 
112 '''/<code> 

代碼不要直接複製,要自己動手敲,學習Python一定要多動手的,最後送福利,如果你沒有python入門到高級實戰視頻教程,可以關注我,後臺私信我 ‘py’ 自動獲取最新python教程資料!還有老司機解答哦!

本文的文字及圖片來源於網絡加上自己的想法,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯繫我們以作處理。


分享到:


相關文章: