day19 爬虫

爬虫

爬虫过程

  1. 获取网络数据:requests\selenium
    1. 浏览器伪装
    2. 登录反爬
    3. 代理ip
  2. 解析数据(从获取到的网络数据中提取有效文件):正则表达式、基于css选择器的解析器(bs4)、基于xpath的解析器(lxml)
  3. 保存数据

网页 - html、css(css选择器)

爬虫

获取公开的网络数据。

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

爬虫流程

获取网络数据(requests、selenium)

解析数据,从获取到的网络数据中提取有效数据 (正则、bs4、lxml)

保存数据(csv、excel、数据库等)

requests

Python获取网站数据的第三方库(基于http或https协议的网络请求)。

使用requests场景

  1. 直接请求网络地址。
  2. 对提供网页数据的接口发送请求。

requests基本用法

requests.get(网页地址)获取指定页面数据返回一个响应对象
响应对象.status_code获取响应状态码
响应对象.headers获取响应头
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)

请求内容

返回真正有用的数据。

response.content二进制数据(图片、音频、视频)
response.text字符串类型数据
response.json对内容进行json解析后的数据(json数据接口)

网页

前端开发

写互联网产品页面(电脑端应用程序除外)。

前端开发相关技术 - html、css、js(原生js、JQuery、Vue、React)

html负责网页内容
css负责网页内容样式及布局
js负责网页内容变化

html

标签为单位给网页提供内容,不同标签可以提供不同内容。

标签语法结构
<!-- 
1.双标签:<标签名 属性名=属性值1 属性名2=属性值2 ...>标签内容</标签名>
2.单标签:1.<标签名 属性名=属性值1 属性名2=属性值2 ...>
         2.<标签名 属性名=属性值1 属性名2=属性值2 .../>
-->

css

操作网页内容样式,美观网页。

语法

选择器{属性1:属性值1;属性2:属性值2…}

选择器
  1. 元素选择(标签选择) - 标签作为选择器,选中所有指定标签。

    p{} - 选中所有p标签。

    a{} - 选中所有a标签。

    		p{
    			color: red;
    			font-size: 30px;
    		}
    	</style>
    	<p>我是段落1</p>  <!-- 选中了 -->
    	<a href="">我是超链接1</a>
    	<div>我是div1</div>
    	<a href="">我是超链接2</a>
    	<p>我是段落2</p>  <!-- 选中了 -->
    
    
    
  2. id选择器 - 在id属性值前面加**#**作为选择器,选中id属性值为指定值的标签。(每个可见标签都可以设置id属性,一个页面中同一个id值只有一个标签)

    #p2 - 选中id属性值为p2的标签。

    	<style>
    		#p2{
    			color: green;
    			background-color: yellow;
    		}
    	</style>
    	<p>我是段落1</p>
    	<a href="">我是超链接1</a>
    	<div>我是div1</div>
    	<a href="">我是超链接2</a>
    	<p id="p2">我是段落2</p>  <!-- 选中了 -->
    
  3. 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{} - div的儿子p

    	<style>
    		
    		div>p{
    			font-size: 30px;
    		}
    	</style>
    	
    	<p>我是段落1</p>
    	
    	<div>
    		<p>我是段落2</p>  <!-- 30px -->
    		<span>
    			<p>我是段落5</p>
    		</span>
    	</div>
    	
    	<div id="box1">
    		<p>我是段落3</p>  <!-- 30px -->
    		<div>
    			<span>
    				<div>
    					<p>我是段落4</p>  <!-- 30px -->
    				</div>
    			</span>
    		</div>
    		
    	</div>
    
  6. 后代选择器 - 多个选择器用空格隔开作为一个选择器

    div p{} - div的后辈p

		div p{
			background-color: yellow;
			}
		<p>我是段落1</p>
		
		<div>
			<p>我是段落2</p>  <!--background-color: yellow  -->
			<span>
				<p>我是段落5</p>  <!--background-color: yellow  -->
			</span>
		</div>
		
		<div id="box1">
			<p>我是段落3</p>  <!--background-color: yellow  -->
			<div>
				<span>
					<div>
						<p>我是段落4</p>
					</div>
				</span>
			</div>
			
		</div>
--background-color: yellow  -->
			</span>
		</div>
		
		<div id="box1">
			<p>我是段落3</p>  <!--background-color: yellow  -->
			<div>
				<span>
					<div>
						<p>我是段落4</p>
					</div>
				</span>
			</div>
			
		</div>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值