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)
相关文章
相关标签/搜索