又到了愉快的周末了,今天她不在家我们就来玩点骚操作,我们来玩点男人最喜欢干的事情,来爬取小姐姐视频,晚上就可以偷偷的乐了。喜欢的朋友可以来个一键三连。
一、分析页面
这次我么爬取的是一个六间房
的一个网页 官方地址: https://v.6.cn/minivideo/
实现思路:
- 通过抓包来找到我们想要的url路径
- 拿到url发送请求返回我们数据
- 解析数据将我们不需要的数据剔除掉
- 将数据保存我们本地
到这里我们就已近获取到url就可以发送请求了 我们这边用的是 requests 库
二、什么 requests(小白)
1.请求方式
常见的请求方式:GET / POST
2.请求的URL
url全球统一资源定位符,用来定义互联网上一个唯一的资源 例如:一张图片、一个文件、一段视频都可以用url唯一确定
3.请求头
User-agent:请求头中如果没有user-agent客户端配置,服务端可能将你当做一个非法用户host;
cookies:cookie用来保存登录信息
注意:一般做爬虫都会加上请求头
。
请求头需要注意的参数:
Referrer: 访问源至哪里来(一些大型网站,会通过Referrer 做防盗链策略;所有爬虫也要注意模拟)
User-Agent: 访问的浏览器(要加上否则会被当成爬虫程序)
cookie: 请求头注意携带
4.请求体
请求体 如果是get方式,请求体没有内容 (get请求的请求体放在 url后面参数中,直接能看到) 如果是post方式,请求体是format data ps:1、登录窗口,文件上传等,信息都会被附加到请求体内 2、登录,输入错误的用户名密码,然后提交,就可以看到post,正确登录后页面通常会跳转,无法捕捉到post
三、response 基本介绍
1.响应状态码
200:代表成功
301:代表跳转
404:文件不存在
403:无权限访问
502:服务器错误
2.response header
响应头需要注意的参数:Set-Cookie:BDSVRTM=0; path=/:可能有多个,是来告诉浏览器,把cookie保存下来
3.preview就是网页源代码
json数据
如网页html,图片
二进制数据等
四、编写代码
4.1 导入依赖库
import requests
import re
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
'''
@Project :Python-crawler-set
@File :六间房Start.py
@IDE :IntelliJ IDEA
@Author :大数据老哥
@Date :2020/12/19 15:21
'''
# 导入所需要的依赖
import requests
import re
# 过滤掉特殊字符
def match(title):
compile= re.compile(r'[\\\/:\*\?\"><\|]')
match = re.sub(compile, "_",title)
return match
# 设置请求头等参数,防止被反爬
headers = {
'Accept': '*/*',
'Accept-Language': 'en-US,en;q=0.5',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36'
}
def main(num):
url="https://v.6.cn/minivideo/getMiniVideoList.php?act=recommend&page=%s&pagesize=50" %(num)
print("开始下载第%s页" %(num))
# 发送请求
data=requests.get(url,headers=headers)
# 解析数据
json=data.json()
# 解析出我们想要的数据来
datalist=json["content"]["list"]
# 循环遍历数据
for data in datalist:
#获取title
title=data["alias"]+'.mp4'
newTitle=match(title)
# 获取视频url
playurl=data["playurl"]
# 在次发一次请求 来请求视频数据
video=requests.get(playurl,headers=headers)
with open("video\\"+newTitle,'ab') as output:
# 以二进制的形式写入到本地
output.write(video.content)
print("下载成功: ",newTitle)
if __name__ == '__main__':
for i in range(1,10):
main(i)
总结
好了今天的爬虫分享到这里就结束啦,喜欢的朋友可以关注我的公众号第一时间阅读分享的内容,我这边也为大家搭建了一个我自己Github 喜欢的朋友可以去收藏波,链接:https://github.com/lhh2002/Python-crawler-set 里面主要内容有我自己编写的一些爬虫脚本都会在里面,喜欢的可以去下载。
往期推荐
Python爬取哔哩哔哩(bilibili)视频
使用Python实现PDF转word原来如此简单,你也可以学会哦