关于python:二十行Python代码爬取微博高质量美女视频福利

4次阅读

共计 3061 个字符,预计需要花费 8 分钟才能阅读完成。

兄弟们,不发高质量爬虫,你们就都不看,唉~

原来你们都是这样的人!!!

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

用的环境是 Python3.6 和 pycharm,须要装置一个浏览器驱动(谷歌或者火狐的都能够,跟浏览器版本相近就行)没有的小伙伴能够私信我“小姐姐”支付 包含本次的残缺代码,残缺教程支付。

一、爬虫原理

  • 作用: 批量获取互联网数据 (文本, 图片, 音频, 视频)
  • 实质: 一次次的申请与响应
  • 申请形式 大多数为 (get/post)
办法 形容
GET 申请页面,并返回页面内筒
HEAD 相似于 GET 申请,只不过返回的响应中没有具体的内容,用于获取报头
POST 大多数用于提交表单或上传文件,数据蕴含在申请体中
PUT 从客户端向服务器传送的数据取代指定文档中的内容
DELETE 申请服务器删除指定的页面
CONNECT 把服务器当做跳板,让服务器代替客户端拜访其余网页
OPTIONS 容许客户端查看服务器的性能
TRACE 回显服务器收到的申请,次要用于测试或诊断
  • 申请头 Request Headers(键值对的模式)申请的一些配置信息通知服务器,让服务器判断这些配置信息解析申请头,用来阐明服务器要应用的附加信息,比拟重要的信息有 Cookie,Referer,User-Agent 等。
    • Accept: 申请报头域,用于指定客户端可承受哪些类型的信息。
    • Accept – Language: 指定客户端可承受的语言类型。
    • Accept-Encoding: 指定客户端可承受的内容编码。
    • Host: 用于指定申请声援的主机 IP 和端口号,其内容为申请 URL 的原始服务器或网关的地位。从 HTTP1.1 版本开始,申请必须蕴含此内容。
    • Cookie: 也罕用复数模式 Cookies,这是网站为了分别用户进行会话跟踪而存储在用户本地的数据。它的次要性能是维持以后拜访会话。例如,咱们输出用户名和明码胜利登录某个网站后,服务器会用会话保留登录状态信息,前面咱们每次刷新或申请该站点的其余页面时,会发现都是登录状态,这就是 Cookies 的功绩。Cookies 里有信息标识了咱们所对应的服务器的会话,每次浏览器在申请该站点的页面时,都会在申请头加上 Cookies 并将其返回给服务器,服务器通过 Cookies 辨认出是咱们本人,并且查出以后状态是登录状态,所以返回后果就是登陆之后能力看到的网页内容。
    • Referer: 此内容用来标识这个申请是从哪个页面发过来的,服务器能够拿到这一信息并做相应解决,如做起源统计、防盗链解决等。
    • User-Agent: 简称 UA,它是一个非凡的字符串头,能够使服务器辨认客户应用的操作系统及版本、浏览器及版本等信息。在做爬虫时加上此信息,能够假装为浏览器:如果不加,很容易可能被辨认出为爬虫。
    • 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)
    • 1、响应状态码响应状态码示意服务器的响应状态,如 200 代表服务器失常响应,404 代表页面未找到,500 代表服务器外部产生谬误。在爬虫中,咱们能够依据状态码来判断服务器响应状态,如状态码为 200,则证实胜利返回数据,再进行进一步的解决,否则间接疏忽。
    • 2、响应头
    • 3、响应体最重要的当属响应体的内容了。响应的注释数据都在响应体中,比方申请网页时,它的响应体就是网页的 HTML 代码;申请一张图片时,它的响应体就是图片的二进制数据。咱们走爬虫申请网页后,要解析的内容就是响应体,在浏览器开发者工具中点 Preview,就能够看到网页的源代码,也就是响应体的内容,它是解析的指标。在做爬虫时,咱们次要通过响应体失去的网页的源代码、JSON 数据等,而后从中做相应内容的提取。用 http 申请库向服务器发送一个申请,而后失去这个 response,把这个响应体里的内容拿下来,而后解析就能够拿到咱们的数据了。

二、案例实现

  1. 找到指标网址
  2. 发送网络申请
  3. 获取数据
  4. 筛选数据
  5. 保留数据
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, "爬取胜利................")

兄弟们 给你们送个女朋友,冲鸭~

正文完
 0