Python爬虫入门0
一、爬虫基本原理
-
什么是爬虫
爬虫就是爬取数据 -
什么是互联网
由无数的网络设备相互链接形成的链接关系称之为互联网 -
互联网建立的目的
数据的传递与共享 -
什么是数据
例如:电商平台的信息(淘宝、京东)
链接、自如租房平台的房源信息
股票证券投资信息
12306,票务信息 -
什么是上网
-
普通用户:
- 打开浏览器
- 输入网址
- 向目标主机发送请求
- 返回响应数据
- 浏览器渲染数据
-
爬虫程序:
- 模拟浏览器
- 向目标主机发送请求
- 返回响应数据
- 解析并提取有价值的数据
- 保存数据(文件写入到本地、从持久化到数据库中)
- 爬虫的全过程
- 发送请求(请求库:requests/selenium)
- 获取响应数据
- 解析数据(解析库:BeautifulSoup4)
- 保存数据(存储库:文件保存/MongoDB)
二、Requests请求库
-
安装使用
pip install requests
import requests
-
分析请求流程
- 百度
- 请求url
https://www.baidu.com - 请求方式
GET - 响应状态码
200 - User-Agent
… - Cookies
…
- 请求url
- 百度
-
编写代码
import re
import uuid
import requests
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 '
'(KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36',
}
def get_page(urls):
response = requests.get(urls, headers=headers)
return response
def parse_index(html):
# re.findall(正则匹配规则 匹配文本 匹配模式)
result = re.findall('<div class="items"><a class="imglink" href="(.*?)"', html, re.S)
return result
def parse_detail(html):
video_urls = re.findall('<source src="(.*?)">', html, re.S)
if video_urls:
return video_urls[0]
def save_video(content):
with open(f'{uuid.uuid4()}.mp4', 'wb') as f:
f.write(content)
print('下载成功')
if __name__ == '__main__':
# for i in range(6):
# url2 = f'http://www.xiaohuar.com/list-3-{i}.html'
url = 'http://www.xiaohuar.com/v/'
res = get_page(url)
detail_urls = parse_index(res.text)
for detail_url in detail_urls:
detail_res = get_page(detail_url)
video_url = parse_detail(detail_res.text)
if video_url:
print(video_url)
video_res = get_page(video_url)
save_video(video_res.content)