前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >二十行Python代码爬取微博高质量美女视频(福利)

二十行Python代码爬取微博高质量美女视频(福利)

原创
作者头像
秃头程序员
发布2021-12-23 11:45:14
5210
发布2021-12-23 11:45:14
举报
文章被收录于专栏:秃头程序员的Python知识库

大家关注我这么久了,当然要来一点正经的教学视频,毕竟不是正经的大家都不看,今天就给大家爬个小姐姐。

用的环境是Python3.6和pycharm,需要安装一个浏览器驱动(谷歌或者火狐的都可以,跟浏览器版本相近就行)没有的小伙伴可以私信我“小姐姐”领取 包括本次的完整代码,完整教程领取。

一、爬虫原理

  • 作用: 批量获取互联网数据(文本, 图片, 音频, 视频)
  • 本质: 一次次的请求与响应
  • 请求方式 大多数为(get/post)

| 方法 | 描述 |

| ------- | -------------------------------- |

| GET | 请求页面,并返回页面内筒 |

| HEAD | 类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报头 |

| POST | 大多数用于提交表单或上传文件,数据包含在请求体中 |

| PUT | 从客户端向服务器传送的数据取代指定文档中的内容 |

| DELETE | 请求服务器删除指定的页面 |

| CONNECT | 把服务器当做跳板,让服务器代替客户端访问其他网页 |

| OPTIONS | 允许客户端查看服务器的性能 |

| TRACE | 回显服务器收到的请求,主要用于测试或诊断 |

  • 请求头 Request Headers (键值对的形式) 请求的一些配置信息告诉服务器,让服务器判断这些配置信息解析请求头,用来说明服务器要使用的附加信息,比较重要的信息有Cookie,Referer,User-Agent等。
    • Accept: 请求报头域,用于指定客户端可接受哪些类型的信息。
代码语言:txt
复制
-   Accept - Language: 指定客户端可接受的语言类型。
代码语言:txt
复制
-   Accept-Encoding: 指定客户端可接受的内容编码。
代码语言:txt
复制
-   Host:用于指定请求支援的主机IP和端口号,其内容为请求URL的原始服务器或网关的位置。从HTTP1.1版本开始,请求必须包含此内容。
代码语言:txt
复制
-   Cookie: 也常用复数形式Cookies,这是网站为了辨别用户进行会话跟踪而存储在用户本地的数据。它的主要功能是维持当前访问会话。例如,我们输入用户名和密码成功登录某个网站后,服务器会用会话保存登录状态信息,后面我们每次刷新或请求该站点的其他页面时,会发现都是登录状态,这就是Cookies的功劳。Cookies里有信息标识了我们所对应的服务器的会话,每次浏览器在请求该站点的页面时,都会在请求头加上Cookies 并将其返回给服务器,服务器通过Cookies识别出是我们自己,并且查出当前状态是登录状态,所以返回结果就是登陆之后才能看到的网页内容。
代码语言:txt
复制
-   Referer: 此内容用来标识这个请求是从哪个页面发过来的,服务器可以拿到这一信息并做相应处理,如做来源统计、防盗链处理等。
代码语言:txt
复制
-   User-Agent: 简称UA,它是一个特殊的字符串头,可以使服务器识别客户使用的操作系统及版本、浏览器及版本等信息。在做爬虫时加上此信息,可以伪装为浏览器:如果不加,很容易可能被识别出为爬虫。
代码语言:txt
复制
-   Content-Type: 也叫互联网媒体类型(Internet Media Type)或者MIME类型,在HTTP协议消息头中,它用来表示具体请求中的媒体类型信息。例如,text/html 代表HTML格式,image/gif 代表GIF图片,application/json 代表JSON类型,更多对应关系可以查看此对照表:http://tool.oschina.net/commons
  • Response中包含什么内容?
    • 响应,由服务端返回给客户端,可以分为三部分:响应状态码(Response Status Code)、响应头(Response Headers)、响应体(Response Body)
代码语言:txt
复制
-   1、响应状态码响应状态码表示服务器的响应状态,如200代表服务器正常响应,404代表页面未找到,500代表服务器内部发生错误。在爬虫中,我们可以根据状态码来判断服务器响应状态,如状态码为200,则证明成功返回数据,再进行进一步的处理,否则直接忽略。
代码语言:txt
复制
-   2、响应头
代码语言:txt
复制
-   3、响应体最重要的当属响应体的内容了。响应的正文数据都在响应体中,比如请求网页时,它的响应体就是网页的HTML代码;请求一张图片时,它的响应体就是图片的二进制数据。我们走爬虫请求网页后,要解析的内容就是响应体, 在浏览器开发者工具中点Preview,就可以看到网页的源代码,也就是响应体的内容,它是解析的目标。在做爬虫时,我们主要通过响应体得到的网页的源代码、JSON数据等,然后从中做相应内容的提取。用http请求库向服务器发送一个请求,然后得到这个response,把这个响应体里的内容拿下来,然后解析就可以拿到我们的数据了。

二、案例实现

  1. 找到目标网址
  2. 发送网络请求
  3. 获取数据
  4. 筛选数据
  5. 保存数据
代码语言:txt
复制
import requests

import pprint



# 统一替换

# 1.选中要替换的内容

# 2.按住Ctrl+R 注: 点亮星号\* / 2021版本一下 点亮Regex

# 3.在第一个框里面输入(.\*?): (.\*)

# 4.在第二个框里面输入'$1': '$2',

# 5.点击REPLACE ALL

headers = {

'cookie': '',

'referer': 'https://weibo.com/tv/channel/4379160563414111/editor',

'user-agent': '',

}

data = {

'data': '{"Component\_Channel\_Editor":{"cid":"4379160563414111","count":9}}'

}

url = 'https://www.weibo.com/tv/api/component?page=/tv/channel/4379160563414111/editor'

json\_data = requests.post(url=url, headers=headers, data=data).json()

ccs\_list = json\_data['data']['Component\_Channel\_Editor']['list']

next\_cursor = json\_data['data']['Component\_Channel\_Editor']['next\_cursor']

for ccs in ccs\_list:

oid = ccs['oid']

title = ccs['title']

data\_1 = {

'data': '{"Component\_Play\_Playinfo":{"oid":"' + oid + '"}}'

}

# 1. 找到目标网址

url\_1 = 'https://weibo.com/tv/api/component?page=/tv/show/' + oid

# 2. 发送网络请求

# 2.1 构造请求头

# 2.2 构造请求参数

# 3. 获取数据

json\_data\_2 = requests.post(url=url\_1, headers=headers, data=data\_1).json()

# 4. 筛选数据

dict\_urls = json\_data\_2['data']['Component\_Play\_Playinfo']['urls']

video\_url = "https:" + dict\_urls[list(dict\_urls.keys())[0]]

print(title + "\t" + video\_url)

# 5. 保存数据

video\_data = requests.get(video\_url).content

with open(f'video\{title}.mp4', mode='wb') as f:

f.write(video\_data)

print(title, "爬取成功................")

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、爬虫原理
  • 二、案例实现
相关产品与服务
云开发 CLI 工具
云开发 CLI 工具(Cloudbase CLI Devtools,CCLID)是云开发官方指定的 CLI 工具,可以帮助开发者快速构建 Serverless 应用。CLI 工具提供能力包括文件储存的管理、云函数的部署、模板项目的创建、HTTP Service、静态网站托管等,您可以专注于编码,无需在平台中切换各类配置。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档