欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Day 01

程序员文章站 2022-03-25 20:16:38
今日内容:爬虫课程: 一 爬虫基本原理 二 request请求库一 爬虫基本原理 1、什么是爬虫? 爬虫就是爬取数据 2、什么是互联网? 由一堆网络设备,把一台台计算机互联到一起称之为互联网。 3、互联网建立的目的 数据的传递与数据的共享 4、什么是数据? 例如: 电商平台的商品信息... ......
今日内容:
爬虫课程:
一 爬虫基本原理
二 request请求库

一 爬虫基本原理

1、什么是爬虫?
爬虫就是爬取数据

2、什么是互联网?
由一堆网络设备,把一台台计算机互联到一起称之为互联网。

3、互联网建立的目的
数据的传递与数据的共享

4、什么是数据?
例如:
电商平台的商品信息()
链家、自如租房平台的房源信息
股票证券投资信息()
...
12306、票务信息(抢票)

5、什么是上网?
普通用户:
打开互联网
--->输入网址
--->往目标主机发送请求
--->返回响应数据
--->把数据渲染到浏览器中

爬虫程序:
模拟浏览器
--->往目标主机发送请求
--->返回响应数据
--->解析并提取有价值的数据
--->保存数据(文件写入本地、持久化到数据库中)

6、爬虫全过程:
1.发送数据(请求库:request/selenium)
2.获取响应数据
3.解析数据(解析库:beautifulsoup4)
4.保存数据(存储库:文件保存/mongodb)

总结:我们可以把互联网中的数据比喻成一座宝藏,爬虫其实就是在挖去宝藏。
二 requests请求库
1、安装与使用
pip3 install requests

2、分析请求流程(模拟浏览器)
- 百度:
1.请求url
www.baidu.com

2.请求方式
get
post

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