1.經常使用數據類型的內置方法
內置方法指的是對當前數據修改的功能。
list1 = [1, 2, 3]
list1.append(3)
能夠爲list1列表末尾追加一個值。python
須要對數據進行的數據類型
字符串
'財貿學院學生說tank是18歲'
內置方法:
索引取值
切片
長度len
成員運算in|not in
移除空白strip
切分split
lower&upper
startswith&endswith
replace
isdigitgit
列表
內置方法:
append()web
字典
內置方法:
get瀏覽器
2.文件處理
文件處理就是對文件進行讀寫,把產生的數據保存到硬盤中。
c:/爬蟲.txt服務器
# 讀寫文本文件
with open(保存的文件路徑, 讀寫模式, encoding='utf-8) as f:app
# 讀寫二進制文件: 圖片、視頻...
with open(保存的文件路徑, 讀寫模式) as f:ide
3.爬蟲
- 爬蟲基本原理
爬蟲指的是爬取數據。post
什麼是上網?
普通用戶
打開瀏覽器 ---> 輸入網址
---> 按回車鍵(往目標網站發送請求)
---> 獲取目標網站的數據
---> 把獲取的數據渲染到瀏覽器上網站
爬蟲程序
模擬成瀏覽器
---> 往目標站點發送請求獲取數據
---> 解析並提取想要(有價值)的數據
---> 保存到本地編碼
爬蟲步驟:
1.發送請求 模擬瀏覽器發送請求--> requests
2.獲取數據 (服務器會自動返回數據)
3.解析數據 解析並獲取有價值的數據 --> re, bs4
4.保存數據 文件處理保存數據 ---> with open()
requests模塊
爬取盒子電影網視頻:
<video class="dplayer-video dplayer-video-current" webkit-playsinline=""
playsinline=""
poster="http://jx.178du.com/Dplayer/loading.png" preload="auto"
src="http://sz-download.weiyun.com/ftn_handler/22a0ec1b5d65cbdcfa1f2383105026c55eca9c3fd872abd9a648d05277a3a70e/%E6%83%8A%E5%A5%87%E9%98%9F%E9%95%BF.mp4"></video>
str1 = '牆裏的想着出去,牆外的人想着進來' # 01 2 34 5 6..89.16 # 索引取值 print(str1[9]) # 外 # 切片 # 獲取str1中的 "牆外的人" 四個字 # range(8, 12) # 8—11 # [8:12] 顧頭不顧尾 尾巴-1 print(str1[8:12]) # 牆外的人 # 長度len print(len(str1)) # 成員運算in|not in print('進' in str1) # True,判斷進字是否在str1裏面 print('進' not in str1) # False # 移除空白strip username = input('請輸入用戶名:') print(username) # 移除username兩邊的空格 username = username.strip() print(username) str2 = '墨:菲:定:律' # 切分split(切分的規則) # list1 = [] # for x in str2: # print(x) # list1.append(x) # print(list1) list1 = str2.split(':') print(list1) # lower&upper 大小寫 str3 = 'aabbCC' # 把str3的字母都變成小寫 lower_str3 = str3.lower() print(lower_str3) # aabbcc # 把str3的字母都變成大寫 upper_str3 = str3.upper() print(upper_str3) # AABBCC # startswith&endswith 判斷字符的開頭或結尾是不是什麼 str4 = 'tank是一個溫文爾雅的靚仔' print(str4.startswith('tank')) # True print(str4.startswith('DSB')) # False print(str4.endswith('靚仔')) # True print(str4.endswith('sb')) # False # replace: 替換.replace(舊, 新) str5 = '呂連傑說,有我的很帥啊,他是徐峯啊!' str5 = str5.replace('徐峯', 'tank') print(str5) # isdigit: 判斷字符是不是數字 str6 = '24124141' print(str6.isdigit()) # True list1 = ['tank', 18, 'tank'] # append list1.append('male') print(list1) # count: 計算列表中值的數量 print(list1.count('tank')) # 2 ''' 字典的內置方法: ''' # dict1: # name = 'tank' # age = 18 dict1 = {'name': 'tank', 'age': 18} print(dict1['name']) # 若key不存在則報錯 # print(dict1['name1']) # get特色是key沒有默認返回None print(dict1.get('name1')) # None ''' 文本讀寫 字符編碼 美國: ASCCI 中國: GBK '安徽財貿' 日本.... 總結: 必須統一字符編碼--> utf-8 ''' # # 寫文件 # with open('安財貿.txt', 'w', encoding='utf-8') as f: # str1 = 'tank很帥,真的啊!' # f.write(str1) # # # 讀文件 # with open('安財貿.txt', 'r', encoding='utf-8') as f: # str1 = f.read() # print(str1) ''' 讀寫二進制流數據: ''' # 讀取二進制流數據 read + bytes rb with open('xiao澤.mp4', 'rb') as f: data = f.read() print(data) ''' 爬取cang老師圖片,並保存到本地。 1.導入requests模塊 下載: 注意: 必須聯網 方式一: pip3 install requests 方式二: file->settings->project->interpreter->'綠色的+' 再輸入框內輸入 ---> requests --> install package import requests 2.使用requests爬取圖片並保存 - 1)下載圖片 - 2)保存圖片 ''' import requests # 1)下載圖片 # requests.get('數據的連接') # 往cang老師圖片地址發送請求獲取響應數據 response = requests.get( 'https://gss1.bdstatic.com/9vo3dSag_xI4khGkpoWK1HF6hhy/baike/w%3D268%3Bg%3D0/sign=4c9bf08f04f41bd5da53eff269e1e6f6/d439b6003af33a87d8d517becc5c10385243b5dd.jpg') # content就是獲取圖片的二進制流數據 print(response.content) # 2)保存數據 # 讀取二進制流數據 write + bytes wb with open('cang老師.jpg', 'wb') as f: # f.write(傳入二進制流的數據) f.write(response.content) ''' 文本讀寫 字符編碼 美國: ASCCI 中國: GBK '安徽財貿' 日本.... 總結: 必須統一字符編碼--> utf-8 ''' # # 寫文件 # with open('安財貿.txt', 'w', encoding='utf-8') as f: # str1 = 'tank很帥,真的啊!' # f.write(str1) # # # 讀文件 # with open('安財貿.txt', 'r', encoding='utf-8') as f: # str1 = f.read() # print(str1) ''' 讀寫二進制流數據: ''' # 讀取二進制流數據 read + bytes rb with open('xiao澤.mp4', 'rb') as f: data = f.read() print(data) ''' 爬取cang老師圖片,並保存到本地。 1.導入requests模塊 下載: 注意: 必須聯網 方式一: pip3 install requests 方式二: file->settings->project->interpreter->'綠色的+' 再輸入框內輸入 ---> requests --> install package import requests 2.使用requests爬取圖片並保存 - 1)下載圖片 - 2)保存圖片 ''' import requests # 1)下載圖片 # requests.get('數據的連接') # 往cang老師圖片地址發送請求獲取響應數據 response = requests.get( 'https://gss1.bdstatic.com/9vo3dSag_xI4khGkpoWK1HF6hhy/baike/w%3D268%3Bg%3D0/sign=4c9bf08f04f41bd5da53eff269e1e6f6/d439b6003af33a87d8d517becc5c10385243b5dd.jpg') # content就是獲取圖片的二進制流數據 print(response.content) # 2)保存數據 # 讀取二進制流數據 write + bytes wb with open('cang老師.jpg', 'wb') as f: # f.write(傳入二進制流的數據) f.write(response.content) ''' 爬取豆瓣電影TOP250: 第一頁: https://movie.douban.com/top250?start=0&filter= 第二頁: https://movie.douban.com/top250?start=25&filter= 第十頁: https://movie.douban.com/top250?start=225&filter= ''' import requests import re # 導入正則模塊 # 1.拼接電影爬取地址url num = 0 for line in range(10): url = 'https://movie.douban.com/top250?start=%s&filter=' % (num,) num += 25 # print(url) # 2.往拼接完的url地址發送請求獲取數據 response = requests.get(url) # print(response.text) # 獲取文本數據 # 3.解析並提取數據 # 電影名稱、電影地址、電影評分、評價人數 # re.findall('匹配文本的規則', '匹配的文本', '匹配模式') # 解析提取文本數據中 想要的數據 ''' .*?: 過濾不想要的數據,直到想要的數據出現 (.*?): 提取想要的數據 # 匹配規則 <div class="item">.*?<a href="(.*?)">.*?<span class="title">(.*?)</span>.*?<span class="rating_num" property="v:average">(.*?)</span>.*?<span>(.*?)人評價</span> ''' data = re.findall( '<div class="item">.*?<a href="(.*?)">.*?<span class="title">(.*?)</span>.*?<span class="rating_num" property="v:average">(.*?)</span>.*?<span>(.*?)人評價</span>', response.text, re.S) # re.S忽略換行 # print(data) for d in data: # print(d) url, name, point, count = d movie_data = ''' 電影名稱: %s 電影地址: %s 電影評分: %s 評價人數: %s \n ''' % (name, url, point, count) print(movie_data) # 4.保存數據 # a: append with open('豆瓣.txt', 'a', encoding='utf-8') as f: f.write(movie_data)