day2-css选择器+requests

01-css选择器

  • css基本语法

    • css负责网页样式和布局

    • 1.css语法
      选择器{
      属性名1:属性值1;
      属性名2:属性值2;
      属性名3:属性值3;
      }

      说明:
      选择器 - 选中需要设置样式的标签
      {} - 固定写法
      属性名 - 决定需要设置哪些样式
      属性值 - 如果时表示数值大小,一般是像素px

      color - 颜色英文单词/rgb(红,绿蓝)/颜色的16进制
      font-size - 字体大小
      backgroundcolor - 背景颜色
      width
      height

    2.css代码写在哪
    1)内联样式表 – style属性
    2)内部样式表
    3)外部样式表、

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8">
    		<link rel="stylesheet" type="text/css" href="./css/01.css"/>
    		<link rel="stylesheet" type="text/css" href="./layui-v2.6.7/layui/css/layui.css"/>
    		<script type="text/javascript" src="./layui-v2.6.7/layui/layui.js"></script>
    		<title></title>
    	</head>
    	<body>
    		<ul class="layui-nav" lay-filter="">
    		  <li class="layui-nav-item"><a href="">最新活动</a></li>
    		  <li class="layui-nav-item layui-this"><a href="">产品</a></li>
    		  <li class="layui-nav-item"><a href="">大数据</a></li>
    		  <li class="layui-nav-item">
    		    <a href="javascript:;">解决方案</a>
    		    <dl class="layui-nav-child"> <!-- 二级菜单 -->
    		      <dd><a href="">移动模块</a></dd>
    		      <dd><a href="">后台模版</a></dd>
    		      <dd><a href="">电商平台</a></dd>
    		    </dl>
    		  </li>
    		  <li class="layui-nav-item"><a href="">社区</a></li>
    		</ul>
    		 
    		<script>
    		//注意:导航 依赖 element 模块,否则无法进行功能性操作
    		layui.use('element', function(){
    		  var element = layui.element;
    		  
    		  //…
    		});
    		</script>
    		
    		<div class="left">
    			<ul>
    				<li></li>
    			</ul>
    		</div>
    		<div class="right">
    			<div class="layui-carousel" id="test1">
    			  <div carousel-item>
    			    <div>条目1</div>
    			    <div>条目2</div>
    			    <div>条目3</div>
    			    <div>条目4</div>
    			    <div>条目5</div>
    			  </div>
    			</div>
    			<!-- 条目中可以是任意内容,如:<img src=""> -->
    			 
    			<script src="/static/build/layui.js"></script>
    			<script>
    			layui.use('carousel', function(){
    			  var carousel = layui.carousel;
    			  //建造实例
    			  carousel.render({
    			    elem: '#test1',
    			    width: '100%', //设置容器宽度
    			    arrow: 'always' //始终显示箭头
    			    //,anim: 'updown' //切换动画方式
    			  });
    			});
    			</script>
    		</div>
    		
    		
    	</body>
    </html>
    
    
    # css
    .left{
    	border: 1px solid red;
    	min-height: 600px;
    	width: 30%;
    	float: left;
    	margin-left: 3px;
    }
    .right{
    	border: 1px solid red;
    	min-height: 600px;
    	width: 69%;
    	float: left;
    	
    }
    
    
  • css选择器

    • 1.标签选择器(元素选择器) - 1
      直接将标签名作为一个选择器,选中整个页面的所有指定标签
      例如 p{}

    • 2.id选择器 - 4
      在标签的id属性值前加#作为一个选择器,选中id属性值是指定值的标签,id唯一

    • 3.类选择器(class选择器) - 2
      在标签的class属性值前加.作为一个选择器,选中class属性值是指定值的标签
      例如:.c1{} 选中属性值c1的标签
      .c1.c2 - 选中class属性值同时为c1c2的标签

    • 4.* 选中所有标签

    • 4.群组选择器
      将多个独立的选择器用逗号隔开作为一个选择器,选中每个独立选择器选中的所有标签
      例如 p,a{} - 选中所有p标签和所有的a标签
      .c1,p{}
      .c1,#p1,a,#p2{}

    • 5.后代选择器
      将多个独立的选择器用空格隔开来作为一个选择器
      p a{} - p标签里面的所有后代a标签

    • 6.子代选择器
      前后两个必须是父子关系
      将多个独立的选择器用>隔开
      p>a 选中所有作为p标签的子代的a标签

      div.info{} - class为info的div标签
      #p1.c1{} - id为p1并且class为c1
      .c1.c2{} - 并且

      p:nth-child(N) - 选中第N个p标签
      div p:nth-child(N) - 选中div里面的第N个p标签


<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<style type="text/css">
			/* ===========1.标签选择器==================== */
			p{
				color: red;
			}
			/* ===========6.子代选择器================== */
			p>a{
				color: #00FF00;
			}
			a{
				color: #0000FF;
				text-decoration: none;
			}
			/* ============== 2.id选择器============ */
			#p2{
				color: #5FB878;
				font-size: 25px;
			}
			/* ============== 3.类选择器=========== */
			.p3{
				color: #2D93CA;
				font-size: 15px;
			}
			/* ============== 4.群组选择器============ */
			.c1.c2{
				font-size: 35px;
			}
			div p:nth-child(2){
				color: orange;
			}
		</style>
		<title></title>
	</head>
	<body>
		<p>这是一个段落<a>p段落的a标签</a></p>
		<a href="">这是一个超链接</a>
		<p id="p2">这是第二个段落</p>
		<p class='p3'>这是第二个段落</p>
		<a href="" class="c1 c2">这是一个超链接</a>
	</body>
</html>


02- requests的基本使用

import requests

# 1.发送请求
# 1)请求地址
url = 'https://movie.douban.com/top250'
# 2)请求头
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36 Edg/90.0.818.66'
}

response = requests.get(url,headers=headers)

print(response)   # <Response [418]>

# 2.响应
# 1)设置编码方式(乱码的时候才设置)
# response.encoding = '编码方式'

# 2)获取状态码(200)
print(response.status_code)
# 418  身份不对
# 设置User-Agent  -- 200

# 3)获取请求的文本内容(针对url是网页地址)
print(response.text)

03-requests请求数据接口

import requests

url = 'http://api.tianapi.com/auto/index?key=c9d408fefd8ed4081a9079d0d6165d43&num=10'
response = requests.get(url)
print(response.text)
result = response.json()
print(result['msg'])

04-图片下载

import requests

# 图片的网络地址
url = 'https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=1810171082,1266198879&fm=26&gp=0.jpg'

# 请求图片数据
response = requests.get(url)

# 保存图片数据
if response.status_code == 200:
    f = open('./a.jpg', 'wb')
    f.write(response.content)
    f.close()

05-多页面数据

# 如果目标网站以多页的方式来提供数据,爬虫的时候先找不同页面的url之间的规律

import requests

headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36 Edg/90.0.818.66'
}

def get_top250(url):
    response = requests.get(url,headers=headers)
    if response.status_code != 200:
        print('请求失败',response)
        return
    print(response.text)
    print('========')


if __name__ == '__main__':
    for start in range(1,226,25):
        url =f'https://movie.douban.com/top250?start={start}&filter='
        get_top250(url)

06-设置cookie

import requests
url = 'https://www.zhihu.com/'
headers= {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36 Edg/90.0.818.66',
    # 'cookie':
}
response = requests.get(url,headers=headers)

if response.status_code == 200:
    print(response.text)
else:
    print('请求失败', response)

作业



import requests
import re
from re import *
url = 'https://www.imdb.cn/IMDB250'

headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36 Edg/90.0.818.66',
    # 'cookie':'SINAGLOBAL=2486452744011.165.1621578663230; UOR=,,www.baidu.com; login_sid_t=8d00b9bd86c1ef814b3c7757ce661b8f; cross_origin_proto=SSL; _s_tentry=www.baidu.com; Apache=2064070125546.9507.1621933248900; ULV=1621933248903:5:5:4:2064070125546.9507.1621933248900:1621836475964; wb_view_log=1494*9341.5; WBtopGlobal_register_version=2021052517; SUB=_2A25NqLHYDeRhGeNM41ES8y7JzT2IHXVu36QQrDV8PUNbmtB-LVjYkW9NSeC9GiwK3D7S0cqkeYuqoSgJmOc_e4yS; SUBP=0033WrSXqPxfM725Ws9jqgMF55529P9D9WhxULKqccVgYTMP6WGFn9F.5JpX5KzhUgL.Fo-E1he0e05fSo22dJLoIEnLxKML1h.LBo-LxK-LBKML1KMLxKBLBonL1hMLxK.L1-2L129gIP9y; ALF=1653470472; SSOLoginState=1621934472; wvr=6; wb_view_log_5283330561=1494*9341.5; webim_unReadCount=%7B%22time%22%3A1621934507948%2C%22dm_pub_total%22%3A0%2C%22chat_group_client%22%3A0%2C%22chat_group_notice%22%3A0%2C%22allcountNum%22%3A0%2C%22msgbox%22%3A0%7D'
}

response = requests.get(url,headers=headers)
result = response.text
# print(result)
re_str= r'''(?s)<img src="(.*?)".*?title='(.*?)' '''
result1 = findall(re_str,str(result))
print(result1)
# re_str1=r'http.*?"'
# result2 = findall(re_str1,str(result1))
# print(result2)

for x in result1:
    response1 = requests.get(x[0])
    with open(f'./img/{x[1]}.jpg', 'wb') as f:
        f.write(response1.content)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值