45321

初识python(五)

<h1 id="if-条件判断">if 条件判断

if 条件判断: # if 条件成立,执行代码1,条件不成立,执行代码2 代码1 else: 代码2 <h2 id="单分支结构">单分支结构</h2> age = 19 if age >= 18: print('你已经成年了!') <h2 id="双分支结构">双分支结构</h2> # 双分支结构 age = 19 if age >= 18: print('成年') else: print('未成年') <h2 id="多分支结构">多分支结构</h2> ''' 如果 成绩>=90,打印"优秀" 如果 成绩>=80 并且 成绩<90,打印"良好" 如果 成绩>=70 并且 成绩<80,打印"普通" 其他情况:打印"差" ''' score = int(input('请输入分数:')) if score >= 90: print('优秀') elif score >= 80: print('良好') elif score >= 70: print('普通') else: print('差') <h1 id="for循环">for循环

循环就是重复做一件事

range(10) 默认从0开始,10结束,默认步长为1,顾头不顾尾

print(list(range(10))) # 打印结果:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] for i in range(10): # 把列表内部的值循环打印出来 i = 0 , i = 2 。。。。。i = 9 print(i)

for 循环例子:

for i in range(32): print(f'8月{i}日刷牙')

注:f 格式化输出 》》字符串拼接 有了f {}就有了特殊含义

for 循环嵌套:内部循环完全走完,才会走一次外层循环,每次走入外层循环,内层循环都会重置

for j in range(1,13): # j =1 # j = 2 for i in range(1, 32): # 控制的是日 print(f'{j}月{i}日刷牙') <ul><li>for + break</li> </ul>for i in range(101): if i == 51: break # 中断循环 print(i) # 只打印0-50, 当i = 51时循环中断,跳出本层循环 <ul><li>for + continue</li> </ul>for i in range(101): if i == 51: continue # 跳出本次循环,不执行本次代码,进入下次循环 print(i) # 不打印i = 51

for循环习题

for i in range(1, 13): # 控制月 for j in range(1,32): # 控制日 if j == 2 and i > 28: continue if j in [4, 6, 9, 11] and i > 30: continue print(f'{j}月{i}日刷牙') <h1 id="爬虫">爬虫

<h2 id="爬虫相关知识">爬虫相关知识</h2>

爬虫三部曲:

<ol><li>发送请求</li> <li>解析数据</li> <li>保存数据</li> </ol>

爬虫精髓:

<ol><li>分析网站的通信流程</li> <li>分析查找数据从何而来</li> <li>分析网站的反爬策略</li> <li>根据网站的反爬策略编写攻击手段,获取数据</li> </ol><h2 id="爬虫程序">爬虫程序</h2> <ol><li>爬取豆瓣电影top250详情</li> </ol>''' 第一页:https://movie.douban.com/top250?start=0&filter= 第二页:https://movie.douban.com/top250?start=25&filter= 第三页:https://movie.douban.com/top250?start=50&filter= 第四页:https://movie.douban.com/top250?start=75&filter= …… 第十页:https://movie.douban.com/top250?start=225&filter= ''' import requests import re # 1. 获取所有电影信息的url num = 0 for line in range(10): url = f'https://movie.douban.com/top250?start={num}&filter=' # print(url) num += 25 # 2.发起请求 response = requests.get( url=url ) # print(response.text) ''' 1.电影名称 2.电影详情页链接 3.电影评分 4.电影评价人数 ''' movie_list = 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) count = 1 with open('douban.txt', 'a', encoding='utf8') as f: for i in movie_list: movie_url = i[0] movie_name = i[1] movie_score = i[2] movie_count = i[3] f.write(f'{movie_url},电影名字:{movie_name},评分:{movie_score},评价人数:{movie_count} \n') print('数据保存成功,爬虫程序结束!') <ol><li>爬取豆瓣电影接口</li> </ol>

分析目标网站的异步请求返回的数据(接口)

json.loads() 把json数据类型转化为python数据类型

json.dumps() 把python数据类型转化为json数据类型

''' https://movie.douban.com/j/chart/top_list?type=5&interval_id=100%3A90&action=&start=0&limit=20 https://movie.douban.com/j/chart/top_list?type=5&interval_id=100%3A90&action=&start=20&limit=20 https://movie.douban.com/j/chart/top_list?type=5&interval_id=100%3A90&action=&start=40&limit=20 https://movie.douban.com/j/chart/top_list?type=5&interval_id=100%3A90&action=&start=60&limit=20 ''' import requests import json # 1.拼接url num = 0 for i in range(10): url = f'https://movie.douban.com/j/chart/top_list?type=5&interval_id=100%3A90&action=&start={num}&limit=20' # print(url) num += 20 # 2.发送请求 response = requests.get( url=url ) # print(response.text) # 把json数据类型转化为python数据类型 # python_data = json.loads(response.text) # print(type(python_data)) movie_list = json.loads(response.text) # 循环电影列表数据中的每一个字典 for movie_dic in movie_list: # 2. 提取数据 电影名称,电影评分,电影的排名,图片地址,详情页地址 movie_name = movie_dic['title'] movie_score = movie_dic['rating'][0] movie_rank = movie_dic['rank'] movie_img_url = movie_dic['cover_url'] movie_url = movie_dic['url'] # 3. 保存数据 movie_data = f''' 电影名称:{movie_name} 电影评分:{movie_score} 电影排名:{movie_rank} 图片地址:{movie_img_url} 详情地址:{movie_url} ''' with open('豆瓣.txt', 'a', encoding='utf8') as f: f.write(movie_data) print('保存数据成功,爬虫程序结束') <ol><li>爬取中国黄页手机号信息</li> </ol>import requests import re url = 'http://gongcheng.huangye88.com/xinxi/143992399.html' # User-Agent: 反爬策略,判断是否为浏览器 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36' } response = requests.get( url=url, headers=headers ) # print(response.text) phone_number = re.findall('<ul class="pro">.*?<li><label>手<span class="none">占</span>机</label><h3 class="big">(.*?)</h3></li>.*?</ul>',response.text,re.S)[0] print('手机号:', phone_number)

来源:博客园

作者:SetCreed

链接:https://www.cnblogs.com/setcreed/p/11426376.html

Recommend