day19学习总结
1. 爬虫 - 获取网络数据(通过各种互联网产品公开的数据)
-
网络数据的来源:网站对应的网页,手机app
- 爬虫基本流程
- 获取网络数据:requests,selenium
- 解析数据(从获取到的网络数据提取有效数据):正则表达式,基于css选择器的解析器(bs4),基于Xpath的解析器(lxml)
- 保存数据:csv(excel)
- 爬虫基本流程
-
requests - Python获取网络数据的第三方库(基于http或者https协议的网络请求)
-
爬虫使用requests的两个场景:直接请求网页地址,对提供网页数据的数据接口发送请求
-
基本用法:
-
对目标网页直接发送请求:
-
语法:requests.get(网页地址) - 获取指定页面的数据返回一个响应对象
import requests response = requests.get('https://cd.zu.ke.com/zufang') print(response) # <Response [200]> 200 - 请求成功 # 获取响应的状态码 print(response.status_code) if response.status_code == 200: pass # 获取响应头 print(response.headers)
-
-
请求内容(返回的真正有用的数据)
- 语法1:response.content - 二进制类型的数据(图片、视频、音频等, 例如:图片下载)
- 语法2:response.text - 字符串类型的数据(网页)
- 语法3:response.json() - 对请求内容做完json解析后的数据(json数据接口)
-
3. 网页 - html,css(css选择器)
-
前端开发:写各种互联网产品界面
-
前端开发相关技术:html,css,js(原生)js,JQuety,vue
Vue,React- html - 负责网页内容,(不同的标签可以提供不同的内容)
- css - 负责网页内容的样式和布局
- js - 负责网页内容的变化
-
标签的语法结构
-
双标签<标签名,属性名1=属性值1,属性名2=属性值2,…>标签内容</标签名>
-
单标签<标签名,属性名1=属性值1,属性名2=属性值2,…> 或者 <标签名 属性名1==属性值1,属性名2=属性值2…/>
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>wusong的破网站</title> </head> <body> <h3><b>Sidaphat</b></h3> <img src="img/安智煐.png.JPG" alt="" height="350px" width="480px"></a> <br> <a href="http://www.baidu.com">百度一下,你就知道</a> <br> <br> 姓名:<input type="text" value='小吴'> 密码:<input type="password" name="" id=""> 性别:<input type="radio" name="gender" id="g1"<laebl for="g1">男</laebl> <input type="radio" name="gender" id="g2"<laebl for="g2">女</laebl> <br> 爱好:<input type="checkbox">看电视 <input type="checkbox">听音乐 <input type="checkbox">玩游戏 <input type="checkbox">逛大街 <br> 籍贯:<select name=""> <option value="中国">中国</option> <option value="泰国">泰国</option> </select>
-
-
css语法:
- 选择器{属性1:属性值1,属性2:属性值2,…}
- 选择器 - 选中需要添加样式的标签
-
css选择器:
-
元素选择(标签选择) - 将标签作为选择器,选中所有的指定的标签
p{} - 选中所有的p标签
a{} - 选择所有的a标签 -
id选择器 - 在id属性值前面加#号作为一个选择器,选中id属性值为指定的标签。每一个可见的标签都可以设置id属性,并且一个页面中,同一个id值只有一个标签
#p1 - 选中id属性值为p1的标签
#a - 选中id属性值为a的标签 -
class选择器 - 在class属性值前加 . 作为一个选择器,选中class属性值为指定的标签。不同的标签可以有相同的class值;同一个标签可以有不同的class值
.c1 - 获取class值为c1的所有标签
p.c1 获取class值为c1的p标签
.c1.c2 - 获取class值同时为c1和c2 -
群组选择器 - 将多个选择器用逗号隔开作为一个选择器
p,a {} - 选择所有的p标签和所有的a标签
#p1,c1,p - 选择id为p1的标签和class为c1标签和所有的p标签 -
子代选择器 - 多个选择器用>隔开作为一个选择器
div > p{} - 父子 -
后代选择器 - 多个选择器用空格隔开作为一个选择器
div p{} - 后代
-