一 爬虫基本原理
1、 什么是爬虫?
爬虫就是爬取数据
2、 什么是互联网?
有一堆网络设备,将一台台的计算机互联到一起,称之为互联网
3、 互联网建立的目的
数据的传递和数据的共享
4、 什么是数据?
例如:
电商平台的商品信息(淘宝、东京、亚马逊)
链家、自如租房的房源信息
股票证券投资信息(东方财富、雪球网)
。。。
12306,票务信息(抢票)
5、 什么是上网?
普通用户:
打开浏览器---->输入网址---->往目标主机发送请求---->返回相应数据--->把数据渲染到浏览器中
爬虫程序:
模拟浏览器
---->往目标主机发送请求
---->返回响应数据
---->解析并提取有价值的数据
---->数据保存(文件写入本地、持久化到数据库中)
6、 爬虫的全过程
1、 发送请求(请求库:Requests/Selenium)
2、 获取响应数据
3、 解析数据(解析库:BeautifulSoup4)
4、 保存数据(存储库:文件保存/MongoDB)
总结:我们可以把互联网中的数据比喻成一座宝库,爬虫其实就是在挖去宝藏。
二 requests请求库
1、 安装与使用
pip3 install requests
2、 分析请求流程(模拟浏览器)
百度:
1、 请求URL
2、 请求方式:GET
3、 响应状态码
''' 爬取校花网视频: 一、请求URL http://www.xiaohuar.com/v/ 二、请求方式 GET 三、请求头信息 User-Agent--用户代理 ''' import requests #爬虫三部曲 #1.发送请求 import time def get_page(url): response=requests.get(url) return response #2.解析数据 import re def parse_index(html): #findall匹配所有 # re.findall(‘正则匹配规则’,‘匹配文本’,‘匹配模式’) #re.S:对全部文本进行搜索匹配 detail_urls=re.findall('div class="items"><a class="imglink" href="(.*?)"', html, re.S) # for detail_url in detail_urls: # print(detail_url) return detail_urls #解析详情页 def parse_detail(html): movie_url=re.findall('<source src="(.*?)"',html,re.S) # print(movie_rul) if movie_url: return movie_url[0] #3.保存数据 import uuid #uuid.uuid4()根据时间戳生成一段世界上唯一的字符串 def save_video(content): with open(f'{uuid.uuid4()}.mp4','wb') as f: f.write(content) print('视频下载完毕') #main+回车键 #测试用例 if __name__ == '__main__': for line in range(6): url=f'http://www.xiaohuar.com/list-3-{line}.html' #发送请求 response = get_page(url) #print(response) #返回响应状态码 # print(response.status_code) #返回响应文本 # print(response.text) #解析主页页面 detail_urls=parse_index(response.text) #循环遍历详情页url for detail_url in detail_urls: # print(detail_url) # 往每一个详情页发送请求 detail_res = get_page(detail_url) # print(response.text) # 解析详情页获取视频url movie_url = parse_detail(detail_res.text) # 判断url存在打印视频 if movie_url: print(movie_url) # 往视频url发送请求获取视频二进制流 movie_res = get_page(movie_url) # 把视频的二进制流给save_video函数去保存到本地 save_video(movie_res.content)