爬虫代码学习
Posted hjl123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了爬虫代码学习相关的知识,希望对你有一定的参考价值。
1、while循环补充
import time num = 0 # 第一层循环 while True: print(‘第一层循环‘) # 第二层循环 while True: print(‘第二层循环‘) # 第三层循环 while True: time.sleep(1) print(‘第三层循环‘) print(num) num += 1 continue print(‘结束本次循环,继续进入本层循环‘) # for 循环 # list1 = [1, 2, 3] # for x in list1: # print(x) # range(0, 10) 0---> (10-1) # range(开始位置,结束位置) # 0-9 print(range(10)) for x in range(1, 10): print(x)
2、字符串的内置方法
str1 = ‘墙里的想着出去,墙外的人想着进来‘ # 索引取值 print(len(str1)) 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, 判断进字是否在sr1里面 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
3、列表的内置方法
# 列表的内置方法 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
4、文件处理
‘‘‘ 文本读写 字符编码 美国: ASCCI 中国: GBK ‘安徽财贸‘ 日本.... 总结: 必须统一字符编码--> utf-8 ‘‘‘ # 写文件 # with open(‘安财贸.txt‘, ‘w‘, encoding=‘utf-8‘) as f: # str1 = ‘tank很帅,真的啊!‘ # f.write(str1) # 读文件 # with open(‘安财贸‘, ‘r‘, encoding=‘utf-8‘) as f: # str1 = f.read() # print(str1) ‘‘‘ 读写二进制流数据:bytes 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()
5、爬取电影视频
‘‘‘ 爬虫三部曲: 1.发送请求 2.解析数据 3.保存数据 ‘‘‘ import requests # 1.发送请求 response = requests.get(‘http://sz-download.weiyun.com/ftn_handler/22a0ec1b5d65cbdcfa1f2383105026c55eca9c3fd872abd9a648d05277a3a70e/%E6%83%8A%E5%A5%87%E9%98%9F%E9%95%BF.mp4‘) # 2.解析数据 此时不需要解析,因为是直接爬取视频的数据 print(response.content) # 3.保存数据 with open(‘惊奇队长.mp4‘, ‘wb‘) as f: f.write(response.content)
6、爬取想要的数据
‘‘‘ 爬取豆瓣电影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)
以上是关于爬虫代码学习的主要内容,如果未能解决你的问题,请参考以下文章