day3

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)
相關文章
相關標籤/搜索