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)