01-css选择器
-
css基本语法
-
css负责网页样式和布局
-
1.css语法
选择器{
属性名1:属性值1;
属性名2:属性值2;
属性名3:属性值3;
}说明:
选择器 - 选中需要设置样式的标签
{} - 固定写法
属性名 - 决定需要设置哪些样式
属性值 - 如果时表示数值大小,一般是像素pxcolor - 颜色英文单词/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)