当前位置: 移动技术网 > IT编程>脚本编程>Python > day01 爬虫基本原理以及requests请求库

day01 爬虫基本原理以及requests请求库

2019年07月01日  | 移动技术网IT编程  | 我要评论

攀岩图片,久久听战歌,猕猴桃种植

一、爬虫基本原理
1.什么是爬虫
爬虫就是爬取数据
2.什么是互联网
有一堆网络设备,把一台台的计算机互联到一起称为互联网
3.互联网建立的目的
数据的传递与数据的共享
4.什么是数据
例如:
电商平台的商品信息
链家,自如租房平台的房源信息
...
12306,票务信息
5.什么是上网
普通用户:
打开浏览器
——>输入网址
——>往目标主机发送请求
——>返回响应数据
——>把数据渲染到浏览器中
爬虫程序:
模拟浏览器
——>往目标主机发送请求
——>返回响应数据
——>解析并提取有价值的数据
——>保存数据(文件写入本地、持久化到数据库中)

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

总结:我们可以把互联网中的数据比喻成一座宝藏,爬虫其实就是在挖宝藏

二、requests请求库
1.安装与使用
pip3 install requests
2.分析请求流程(模拟浏览器)
-百度:
1.请求url
2.请求方式
3.响应状态码

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

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网