• day19 爬虫和前端


    九 爬虫

    9.1 认识爬虫

    1.什么是爬虫 - 获取网络数据(公开的网络)

    网络数据来源:网站对应的网页、手机APP

    2.爬虫的基本流程

    第一步:获取网络数据(requests、selenium)

    第二步:解析数据-从获取的网络数据中提取有效的数据(正则、bs4、lxml)

    第三步:保存数据(csv、excel、数据等)

    3.requests - 获取网络数据的第三方库(基于http或者https协议的网络请求)

    爬虫使用requests的两个常景:直接请求网页地址、对提供网页数据的数据接口发送请求

    1)对目标网页直接发送请求

    requests.get(网页地址) - 获取指定网页的数据返回一个响应对象

    import requests
    
    response= requests.get('https://cd.zu.ke.com/zufang')
    print(response) # 200-请求成功
    
    • 1
    • 2
    • 3
    • 4

    获取响应的状态码 status_code

    print(response.status_code)
    if response.status_code!=200:
        pass
    
    • 1
    • 2
    • 3

    获取响应头

    print(response.headers)
    
    • 1

    请求内容(返回的真正有用的数据)

    response.content - 二进制类型的数据(图片、视频、音频等,例如图片下载)

    response.text - 字符串类型的数据(网页)

    response.json() - 对请求内容做完json解析后的数据(json数据接口)

    print(response.content)
    
    • 1

    4.html是以标签为单位来给网页提供内容的。

    不同的标签可以提供不同的内容。

    1. 标签的语法结构(重要!):

      1)双标签:<标签名 属性名1=属性值1 属性名2=属性值2 …>标签内容

      2)单标签:<标签名 属性名1=属性值1 属性名2=属性值2 …> 或者 <标签名 属性名1=属性值1 属性名2=属性值2 …/>

    DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8">
    		<title>YuTing的网站title>
    		<link rel="icon"  href="img/长城.png">
    	head>
    	
    	<body>
    		
    		<h1>学生信息录入h1>
    		<img src="https://img1.baidu.com/it/u=3002324397,2878731521&fm=253&fmt=auto&app=138&f=JPEG?w=640&h=427" alt="">
    		<p>请同学们完善以下数据:p>
    		
    		<img src="img/三峡.png" alt="">
    		<span>基本信息span>
    		
    		<a href="https://www.baidu.com">百度a>
    		<br>
    		<br>
    		姓名:<input type="text" value="张三">
    		密码:<input type="password" name="" id="">
    		<br><br>
    		性别:
    		<input type="radio" name="gender" id="g1"><label for="g1">label>		
    		<input type="radio" name="gender" id="g2"><label for="g2">label>
    		
    		<br><br>
    		兴趣:
    		<input type="checkbox">篮球  
    		<input type="checkbox">乒乓球
    		<input type="checkbox">爬山
    		<input type="checkbox">玩儿游戏
    		<input type="checkbox">看动漫
    		
    		<br><br>
    		籍贯:
    		<select name="" id="">
    			<option value="北京">北京option>
    			<option value="成都">成都option>
    			<option value="重庆">重庆option>
    			<option value="上海">上海option>
    		select>
    		
    	body>
    html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46

    5.css选择器

    css负责网页内容样式(让网页可以变得更好看)

    css语法:

    选择器(属性1:属性值1;属性2:属性值2…)

    选择器:选中需要添加样式的标签

    2.css选择器

    独立存在的选择器有三个

    1)元素选择器(标签选择器) - 将标签名作为选择器,选中所有指定的标签

    ​ p{} - 选中所有的p标签

    2)id选择器 - 在id属性值前面加#号作为一个选择器,选中id属性值为指定值的标签

    ​ 每一个可见的标签都可以设置id属性,并且一个页面中,同一个id值只有一个标签。

    ​ #id值{}

    ​ #p1 - 选中id属性值为p1的标签

    3)class选择器 - 在class属性值前加.作为一个选择器,选中class属性值为指定值的标签

    ​ 不同的标签可以有相同的class值,同一个标签可以有不同的class值(在class值后面空格加上class值,可以有多个class值)

    ​ .class值{}

    ​ .c1 - 获取class值为c1的所有标签

    ​ p.c1 - 获取class值为c1的p标签

    ​ .c1.c2 - 获取class值同时为c1和c2的标签

    4)群组选择器 - 将多个选择器用逗号隔开作为一个选择器

    ​ p,a{} - 选中所有的p标签和所有的a标签

    ​ #p1,.c1,p{} - 所有id为p1的标签和class值为c1的标签以及所有的p标签

    5)子代选择器 - 多个选择器用>号隔开作为一个选择器(只能有儿子)

    ​ div>p{} - 9

    6)后代选择器 - 多个选择器用空格隔开作为一个选择器(儿子孙子都可以)

    ​ div p{}

    DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8">
    		<title>title>
    		
    		
    		
    	head>
    	<body>
    		
    		<style>
    			p{
    				color: red;
    				font-size: 30px;
    			}
    		style>
    		<p>我是段落1p>
    		<a href="">我是超链接1a>
    		<div>我是div1div>
    		<a href="">我是超链接2a>
    		<p>我是段落2p>
    		
    		
    		<style>
    			#p2{
    				color: green;
    				background-color: yellow;
    			}
    		style>
    		<p>我是段落1p>
    		<a href="">我是超链接1a>
    		<div>我是div1div>
    		<a href="">我是超链接2a>
    		<p id="p2">我是段落2p> -->
    		
    		
    		
    		<!-- >
    			.c1{
    				color: red;
    				font-size: 30px;
    			}
    			
    			.c2{
    				background-color: yellow;
    			}
    			
    			p.c1{
    				text-decoration: line-through;
    			}
    			
    			.c1.c2{
    				border: 1px solid blue;
    			}
    		style>
    		<p class="c1 c2">我是段落1p>
    		<a class="c2" href="">我是超链接1a>
    		<div>我是div1div>
    		<a class="c1" href="">我是超链接2a>
    		<p id="p2">我是段落2p>
    		<p class="c1">我是段落3p>
    		
    		
    		
    		<style>
    			a,p{
    				color: red;
    				font-size: 30px;
    			}
    			.c1,a{
    				background-color: yellow;
    			}
    		style>
    		<p class="c1">我是段落1p>
    		<a href="">我是超链接1a>
    		<div>我是div1div>
    		<a href="">我是超链接2a>
    		<p>我是段落2p>
    		
    		
    		<style>
    			p{
    				color: red;
    			}
    			
    			div>p{
    				font-size: 30px;
    			}
    			
    			div p{
    				background-color: yellow;
    			}
    			
    			#box1>div p{
    				
    			}
    		style>
    		
    		<p>我是段落1p>
    		
    		<div>
    			<p>我是段落2p>
    			<span>
    				<p>我是段落5p>
    			span>
    		div>
    		
    		<div id="box1">
    			<p>我是段落3p>
    			<div>
    				<span>
    					<div>
    						<p>我是段落4p>
    					div>
    				span>
    			div>
    		div>	
    	body>
    html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
  • 相关阅读:
    【karle 笔记】QQ机器人jdk17版本下载和安装
    jwt-decode解析token并存储到Vuex
    STC 51单片机45——51单片机对脉冲计数 汇编 16位除法
    leetcode 移除链表元素
    mysql 截取字段串字段转换成时间格式
    Spring的AOP开发-基于xml配置的AOP
    【Rust笔记】浅聊 Rust 程序内存布局
    支持jesd204b协议高速DAC芯片AD9144-FMC-EBZ配置笔记
    HarmonyOS应用开发者高级认证
    MySQL8--my.cnf配置文件的设置
  • 原文地址:https://blog.csdn.net/qq_59778168/article/details/126291299