學習Python是否感到過度勞累,四肢乏力,腰腿痠痛?這是沒找到學習方法的表現!都知道編程是環環相扣的吧 如果基礎沒學好的話 那麼代碼你是肯定看不懂的~每個技術大牛都是從基礎慢慢的提升上去的,基礎知識越深以後的發展越牛!
這裡還要注意:不管你是剛學Python還是想找python高薪工作,記住:項目實戰永遠是核心,如果你沒有python入門到高級實戰視頻教程,可以關注我,後臺私信我 ‘py’ 自動獲取最新python教程資料!還有老司機解答哦!
思路:1.利用requests去過去網站上的前端源代碼 在源代碼中存在我們想要獲取的數據2.在源代碼中篩選出我們想要的數據 數據篩選 bs43.把篩選出來的數據存放到文件中 保存數據爬蟲的原理:模擬瀏覽器向服務器發送一個get()請求,服務器接收到請求之後返回相應的數據給爬蟲代碼get() 單純的拿數據post() 在拿數據的過程中還能修改數據
對於初學者在學習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教程資料!還有老司機解答哦!
本文的文字及圖片來源於網絡加上自己的想法,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯繫我們以作處理。