爬虫-day1-requests基本用法和网页基础
1.认识爬虫
-
爬虫—用程序自动获取网页数据(可以让数据采集的过程变得简单又高效)
-
爬虫流程
第一步:获取网络数据(数据采集) - requests、selenium
第二步:提取有效(有用)数据(数据解析) - 正则表达式、基于css选择器的解析器(bs4)、基于 xpath的数据解析(lxml)
第三步:数据持久化(保存数据) - csv、excel、数据库
2.requests的用法
requests是Python做http请求(网络请求)的第三方库, 也是爬虫最简单又最实用的工具
-
发送get请求------requests.get(url) - 发送请求获取指定网页的数据,返回一个响应(服务器返回给客户端的数据叫响应)对象
注解:url叫统一资源定位符。(互联网中的每一个数据都有一个唯一的地址,这个地址就是这个数据的url)
-
发送get请求
url赋网页地址 - 你需要爬哪个网站的数据,就给哪个网站的网页地址
response = requests.get(‘https://cd.zu.ke.com/zufang’) -
获取网页文本数据: 响应对象.text----response.text
-
url赋值图片、视频、音频的地址
response = requests.get(‘https://game.gtimg.cn/images/lol/act/img/vo/ban/1.ogg’)
获取图片、视频、音频的二进制数据: 响应对象.content
result = response.content
将图片、视频、音频保存成响应的文件到本地
with open(‘files/安妮.ogg’, ‘wb’) as f:
f.write(result)
-
如果网络地址提供的内容是数据(一般是json数据),那么这个地址就是数据接口
response = requests.get()
result = response.json()
for x in result[‘newslist’]:
print(x['title'])
-
3.html常用网页标签
-
标签语法-----html中标签分为:单标签、双标签
-
双标签:<标签名 属性名1=属性值1 属性名2=属性值2 …>标签内容</标签名>
1.标题标签: h1 ~ h6
2. 段落标签: p
3. 行内文字标签:span、b、i -
单标签:<标签名 属性名1=属性值1 属性名2=属性值2 …> 或者 <标签名 属性名1=属性值1 属性名2=属性值2 … />
-
说明:
标签名 - 是html提前创建好的,不需要程序员自己创建,只需要在需要某个标签的功能的时候使用该标签
属性 - 以’属性名=属性值’的形式存在,多个属性用空格隔开。
属性值不管从生活的角度是什么类型的数据,都必须加双引号。
标签内容 - 只有双标签才有标签内容; 标签内容可以是纯文字,也可以是一个或者多个其他标签,还可以是文字和标签的组合
-
-
图片标签: img
src属性: 需要显示的图片地址
title属性:图片标题
alt属性:图片加载失败的提示信息 -
超链接:a
标签内容: 超链接可见可点击的部分
href属性:跳转的目标地址
target属性:跳转方式 -
有序列表: ol - li
ol标签: 提供一个容器,相当于Python列表的[ ]
li标签: 提供列表中的元素 -
无序列表: ul - li
-
输入框: input-----
-
按钮:button、input-----
4.css语法
-
css语法-----------css负责网页内容的样式和布局。(主要负责让网页变得好看)
说明:
选择器 - 选中标签(需要给哪个标签设置样式,就通过选择器选中那个标签)
属性 - 不同的属性表示不同的样式。
常见属性:color - 设置文字颜色、background-color - 设置背景颜色、
font-size - 设置字体大小、 width - 设置宽度、height - 设置高度 -
选择器
-
元素选择器(标签选择器): 直接将标签名作为一个选择器,选中指定的所有标签
例如:p{} - 选中所有的p标签; a{} - 选中所有的a标签
-
id选择器: 在id属性值前加#作为一个选择器,选中id属性值为指定值的标签 (id属性是唯一的)
例如:#p1 - 选中id属性值为p1的标签
-
类选择器:在class属性值前加.作为一个选择器,选中class属性值为指定值的所有标签
例如:.c1 - 选中class属性值包含c1的所有标签
.c1.c2 - 选中class属性值同时包含c1和c2的所有标签 -
群组选择器:多个选择器用逗号隔开作为一个选择器,选中用逗号隔开的每个选择器选中的所有标签
例如:p,a{} - 选中所有的p标签和所有的a标签
p,#p1,.c2{} - 选中所有p标签和所有id为p1的标签以及所有class值为c2的标签 -
子代(父子)选择器: 多个选择器用>隔开作为一个选择器
-
后代选择器:多个选择器用 隔开作为一个选择器
-
div 没有任何实际意义,仅作为页面模块之间的分割作用
-