if判断

  • 单分支

    s = 11
    if  s  > 10:
    print('输入成功')
    
  • 双分支

    s = 6
    if s  > 2:
    print("大")
    else:
    print("小")
    
  • 多分支

    s = 100
    if s >=90:
    print("优秀")
    elif s>=80:
    print("良好")
    elif s>=70:
    print("普通")
    else:
    print("差")
    

for循环

for i in range(101):
    if i == 50:
       continue
     print(i)

for 循环嵌套

for i in range(13):

​ for j in range (32):

​ print (f'{i}月{j}日')

爬虫三部曲

1.发送请求
2.解析请求
3.保存数据

爬虫的精髓

1.分析网站的通信流程
2.分析查找数据从何而来
3.分析目标网站的反爬策略
4.根据目标网站的反爬策略编写攻击手段,获取数据

json模块

是一种第三方的数据格式
json.loads()  #把json数据转换成python数据格式
json.dumps()  #把python数据格式转成json数据格式

获取豆瓣电影

import requests
import re

'''
第一页:
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=225&filter=
'''
# 0 获取所有电影的url
num = 0 
for line in range(10):
    url = f'https://movie.douban.com/top250?start=(num)&filter=' #0 25 50 75
    num += 25
    
    #1.发送请求
    response = requests.get(
            url=url
    )
    
    #获取响应文本
    #print(repsonse.text)
    
   '''
    1.电影名称
    2.电影详情页链接
    3.电影评分
    4.电影评价人数
   '''
   
   #2.解析并提取数据
   #查找所有
   #re.S:全局查找
   #re.findall('正则匹配规则','解析文本',re.S)
   #获取所有电影的名称
   #move_name = re.findall(<div class="item">.*?<span class="title">(.*?)</span>,reponse.text,re.S)
   #获取电影的名称与详情页地址
   #move_name = re.findall('<div class="item">.*?<a href="(.*?)">.*?<span class="title">(.*?)</span>', response.text, re.S)
   #move_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)
   #循环
   num = 1
   with open('douban.txt','a',encoding='utf-8') as f:
     for line in movie_list:
     movie_url = line[0]
     movie_name = line[1]
     movie_point = line[2]
     movie_count = line[3]
     f.write(movie_erl + '---' + movie_name + '---' + movie_point + '---' + movie_count + '\n')
     print('写入数据成功,爬虫程序结束。。。')
    
import requests
import json

#拼接url
num = 0
for line in range(3):
url = f'https://movie.douban.com/j/chart/top_list?type=24&interval_id=100%3A90&action=&start={num}&limit=20'
num += 20
# print(url)
#1.发送请求
response = requests.get(url=url)
#print(response.text,'=='*100)
#把json数据转成python数据格式
#python_data = json.loads(response.text)
#print(type(python_data))
movie_list = json.loads(response.text)

#循环电影列表数据中的每一个字典
for movie_dic in movie_list:
  #print(type(movie_dic))
  #2.提取数据
  #电影名称,电影评分,电影的排名,图片地址,详情页地址
  movie_name = movie_dic['title'
  movie_point] = movie_dic['rating'h][0] #["9.1","45"]
  movie_rank = movie_dic['ramk']
  movie_img_url = movie_dic['cover_url']
  movie_url = movie_dic['url']
  
  movie_data = f'''
     电影名称:{movie_name}
     电影评分:{movie_point}
     电影排名:{movie_rank}
     图片地址:{movie_img_url}
     详情页地址:{movie_url}
     '''
  print(movie_data)
  
  #3.保存电影数据
  with open('douban2.txt','a',encoding='utf-8') as f:
    f.write(movie_data)

爬取88黄页手机号码

import requests
import re

# 1.发送请求
# url = 'http://qiche.huangye88.com/diandongqiche/diandonglaoyeche/pn17/'

url = 'http://qiche.huangye88.com/xinxi/s121quumg56853.html'

# 反爬策略,通过User-Agent判断是否是浏览器
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'
}
response = requests.get(url=url, headers=headers)
print(response.text)


# 2.解析数据
'''
<ul class="pro">.*?<li><label>手<span class="none">占</span>机</label><h3 class="big">(.*?)</h3></li>.*?</ul>
'''
phone = 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)