DAY-01

一、爬虫基本原理

1. 什么是爬虫?

爬取数据

2. 什么是互联网?

由一堆网络设备,把一台台的计算机互联到一起

3. 互联网建立的目的

数据的传递与分享

4. 什么是数据?

例如:电商平台的商品信息 链家、自如的房源信息 股票证券投资信息(雪球网,东方财富) 12306的票务信息

5. 什么是上网?

普通用户:打开浏览器

---> 输入网址

---> 往目标主机发送请求

---> 返回响应数据

---> 把数据渲染到浏览器中

爬虫程序:模拟浏览器

---> 往目标主机发送请求

---> 返回响应数据

---> 解析并提取有价值的数据

---> 保存数据(文件写入本地、持久化到数据库)

6. 爬虫的全过程

1. 发送请求(请求库:Request/Selenium)

2. 获取响应数据

3. 解析数据(解析库:BeautifulSoup4)

4. 保存数据(存储库:文件保存/MongoDB)

二、Request请求库

1. 安装与使用

pip3 install requests

2. 分析请求流程(模拟浏览器)

1.请求URL:www.baidu.com

2.请求方式:GET/POST......

3.响应状态码:2开头--->请求已接收、理解、接受

3开头--->信息不完整

4开头--->请求有语法错误或者未认证、禁止访问、没有资源

5开头--->服务端错误

3.请求头信息(Request Headers)

*User-Agent:用户代理

 

 课堂实例:

 1 import requests
 2 #爬虫三部曲
 3 # 1.发送请求
 4 def get_page(url):
 5     response = requests.get(url)
 6     return response
 7 
 8 # 2.解析数据
 9 import re
10 def parse_index(html):
11     #findall匹配所有
12     # re.findall('正则匹配规则','匹配文本','匹配模式')
13     #re.S:对全部文本进行搜索匹配
14     detail_urls = re.findall('<div class="items"><a class="imglink" href="(.*?)"',html,re.S)
15     return detail_urls
16 #解析详情页
17 def parse_detail(html):
18     movie_url = re.findall('<source src="(.*?)">',html,re.S)
19     if movie_url:
20         return movie_url[0]  #只返回视频的详细网址
21 
22 # 3.保存数据
23 import uuid
24 # uuid.uuid4()根据时间戳生成一段世界上唯一的字符串
25 def save_video(content):
26     with open(f'{uuid.uuid4()}.mp4','wb') as f:
27         f.write(content)
28         print('视频下载完毕')
29 
30 #测试用例
31 if __name__ == '__main__':
32     for line in range(6):
33         url= f'http://www.xiaohuar.com/list-3-{line}.html'
34 
35         # 发送请求
36         response = get_page(url)
37         # print(response)
38 
39         # #返回响应状态码
40         # print(response.status_code)
41 
42         # # 返回响应文本
43         # print(response.text)
44 
45         #  解析主页页面
46         detail_urls = parse_index(response.text)
47 
48         #循环遍历详情页url
49         for detail_url in detail_urls:
50             print(detail_url)
51 
52             #往每个详情页发送请求
53             detail_response = get_page(detail_url)
54             # print(response.text)
55 
56             #解析详情页获取视频url
57             movie_url = parse_detail(detail_response.text)
58 
59             #判断视频存在url并打印
60             if movie_url:
61                 print(movie_url)
62 
63                 #往视频url发送请求获取视频的二进制流
64                 movie_response=get_page(movie_url)
65 
66                 #把视频的二进制流传给save_video函数保存到本地
67                 save_video(movie_response.content)

猜你喜欢

转载自www.cnblogs.com/cny0331/p/11114059.html