爬虫 http原理,梨视频,github登陆实例,requests请求参数小总结
回顾:http协议基于请求响应的方式,请求:请求首行 请求头{'keys':vales} 请求体 ;响应:响应首行,响应头{'keys':'vales'},响应体。
import socketsock=socket.socket() sock.bind(("127.0.0.1",8808)) sock.listen(5)while 1:print("server waiting.....")conn,addr=sock.accept()data=conn.recv(1024)print("data", data)# 读取html文件with open("login.html","rb") as f:data=f.read()conn.send((b"HTTP/1.1 200 OK\r\nContent-type:text/html\r\n\r\n%s"%data))conn.close()
基于socket的浏览器交互
'''GET请求# 请求首行GET / HTTP/1.1\r\n# get请求后面的参数b'GET /?name=wd&age=11 HTTP/1.1\r\n# 请求头Host: 127.0.0.1:8008\r\nConnection: keep-alive\r\nCache-Control: max-age=0\r\nUpgrade-Insecure-Requests: 1\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181Safari/537.36\r\n Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate, br\r\n Accept-Language: zh-CN,zh;q=0.9\r\n Cookie:csrftoken=7xx6BxQDJ6KB0PM7qS8uTA892ACtooNbnnF4LDwlYk1Y7S7nTS81FBqwruizHsxF\r\n\r\n'# 请求体(get请求,请求体为空) '''b'''''POST请求# 请求首行b'POST /?name=wd&age=11 HTTP/1.1\r\n# 请求头Host: 127.0.0.1:8008\r\n Connection: keep-alive\r\n Content-Length: 21\r\n Cache-Control: max-age=0\r\n Origin: http://127.0.0.1:8008\r\n Upgrade-Insecure-Requests: 1\r\n Content-Type: application/x-www-form-urlencoded\r\n User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36\r\n Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\n Referer: http://127.0.0.1:8008/?name=lqz&age=18\r\n Accept-Encoding: gzip, deflate, br\r\n Accept-Language: zh-CN,zh;q=0.9\r\n Cookie:csrftoken=7xx6BxQDJ6KB0PM7qS8uTA892ACtooNbnnF4LDwlYk1Y7S7nTS81FBqwruizHsxF\r\n\r\n'# 请求体b'name=wd&password=11''''
请求
b"HTTP/1.1 200 OK\r\n Content-type:text/html\r\n\r\n %s"%data
响应
http原理
点击详情
梨视频案例
#返回数据3种格式 #1.text 匹配需要的东西 #2.content(二进制) 保存成图片,视频等 #3.json 反序列化成字典或列表#下载功能 def download(videos,title):if not os.path.exists('video'):os.mkdir('video')path=os.path.join('video',title)+'.mp4'res=requests.get(videos)with open(path,'wb') as f:f.write(res.content)#起线程执行执行 if __name__ == '__main__':from concurrent.futures import ThreadPoolExecutorp=ThreadPoolExecutor(10)for i in parser_index(get_index()):dic=video_info(get_video(i))print(dic)p.submit(download,dic['video'],dic['title'])p.shutdown(wait=True)
#注意问题:梨视频下滑加载视频(是根据url的参数,例如分类下的视频显示多少)
github登陆实例
#get请求登陆页面 获取csrf随机字符串和cookies
#post请求登陆操作 携带csrf,输入的用户名密码等(请求体数据) 和 cookies,user-agent,referer等(请求头数据) 必须数据
数据是请求体还是请求头数据? (我的理解是比如ajax里的data,django的返回数据都是请求体的数据. request.set_cookies('islogin':'true') request对象的数据为请求头的)
""" 1.请求登陆页面 获取token cookie 2.发生登陆的post请求,将用户名密码 和token 放在请求体中,cookie放在请求头中""" import requests import re login_url = "https://github.com/login" #浏览器标识 headers = {"user-agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"} #请求登陆页面 res1 = requests.get(login_url,headers=headers)print(res1.status_code) # 从响应体中获取token token = re.search('name="authenticity_token" value="(.*?)"',res1.text).group(1)# 保存cookie login_cookie = res1.cookies.get_dict() print(login_cookie)# 发送登陆请求 res2 = requests.post("https://github.com/session",headers={"user-agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"},cookies = login_cookie,data={"commit": "Sign in","utf8": "✓","authenticity_token": token,"login": "xxxxxxxxxxx","password": "xxxxxxxxxxx"},# 是否允许自动重定向allow_redirects = False) print(res2.status_code)# 用户登录成功后的cookie user_cookie = res2.cookies.get_dict()# 携带用户cookies访问主页 res3 = requests.get("https://github.com/settings/profile",cookies = user_cookie,headers = headers) print(res3.status_code) print(res3.text) # "https://github.com/settings/profile"
requests请求参数小总结
#get请求参数 kwd = "吴秀波出轨门" url = "https://www.baidu.com/s" requests.get(url,headers=headers,params={"wd":kwd})#post请求参数 requests.post("https://github.com/session",headers={"user-agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"},cookies = login_cookie,data={"commit": "Sign in","utf8": "✓","authenticity_token": token,"login": "ssssss","password": "ssssss"},# 是否允许自动重定向allow_redirects = False) #返回值处理 # response.cookies.get_dict() #获取cookies # response.status_code # 状态码 # response.text # 将结果以文本的形式返回 # response.content # 将结果以二进制的方式返回 # response.json() # 将数据直接反序列化得到字典或是列表
主要代码内容
转载于:https://www.cnblogs.com/3sss-ss-s/p/10301020.html
爬虫 http原理,梨视频,github登陆实例,requests请求参数小总结相关推荐
- 【原理+实战+视频+源码】docker权限参数
一面: 个人介绍加项目介绍20分钟 微服务架构是什么,它的优缺点? ACID CAP BASE理论 分布式一致性协议,二段.三段.TCC,优缺点 RPC过程 服务注册中心宕机了怎么办? 微服务还有其他 ...
- 爬虫入门实战第一站——梨视频视频爬取
爬虫入门实战第一站--梨视频视频爬取 简介 博主最近重新开始了解爬虫,想以文字方式记录自己学习和操作的过程.本篇文章主要是使用爬虫爬取梨视频网站中的视频并下载到本地,同时将视频简介和视频网站保存在ex ...
- Python爬虫的案例分析(梨视频下载)
我们对梨视频的站点进行分析.得出如下结论:视频地址如下,但是在源码中并没有看到,也就得出这个页面是二次渲染.我们通过浏览器,找到返回视频地址的接口 通过比对,返回的视频接口和播放地址,以及视频的初始u ...
- 30亿流量!梨视频靠什么拍出个“短视频世界杯元年”
前队友曝千万别去C罗家吃饭,日本球迷赛后捡垃圾,韩国球迷攻占青瓦台官网,俄罗斯世界杯表现太好,美国要求对俄额外药检--2018年世界杯开赛以来,梨视频推出的一个个千万级短视频引爆全网. 近日,梨视频晒 ...
- 5 爬虫 异步协程 梨视频
# 如何提升requests模块爬取数据的效率?- 多进程或多线程(不建议) 太耗费资源- 线程池或进程池(适当使用) - 单线程 + 异步协程(推荐) # 线程池使用案例 # 梨视频 下载作业 im ...
- python scrapy爬虫视频_python爬虫scrapy框架的梨视频案例解析
之前我们使用lxml对梨视频网站中的视频进行了下载 下面我用scrapy框架对梨视频网站中的视频标题和视频页中对视频的描述进行爬取 分析:我们要爬取的内容并不在同一个页面,视频描述内容需要我们点开视频 ...
- Python爬虫下载视频(梨视频)
梨视频示例:Ctrl+Alt+L格式化代码 import re import requests import hashlib import time # print(respose.status_co ...
- python梨视频爬虫下载,反反爬
python梨视频爬虫下载,反反爬 跟着b站视频学习,发现和视频里面讲的不一样 视频URL改成ajax异步请求得到的 拿到视频url之后发现居然是个假链接不是真实的 仔细观察真实的视频url发现,刚才 ...
- python爬虫下载梨视频
import requests import re import os from urllib.request import urlretrieve def download_vedio():'''下 ...
最新文章
- 一文梳理深度学习算法演进
- 上周日的讲稿: Debian Packaging
- 使用PowerShell deprovision O365 资源
- MS SQL入门基础:数据查询--SELECT语句
- linux mysql 分区_Linux :linux磁盘分区(普通分区2T以内),安装免安装版mysql(tar.gz)...
- c语言一级考试题目第四季度,模拟试题8套
- Python笔记:使用pywin32处理excel文件
- FPGA测试方法以Mentor工具为例
- spss分析方法-主成分分析
- 安卓bochs安装linux教程,Ubuntu 14.04 LTS 安装和配置Bochs
- 计算机自然语言处理的原理,什么是自然语言处理(NLP)?
- java毕业设计鸿鹄教育培训mybatis+源码+调试部署+系统+数据库+lw
- cscd期刊计算机排名,计算机CSCD核心期刊.pdf
- WiFi接口(1)——模块适配(AW-CM358)
- 毕业两年,只会Crud,侥幸通过面试定级 P6,没想到我也可以入职阿里!(面经分享)
- 微软跟投,估值31.5亿美元的光量子计算公司刚刚完成4.5亿美元融资
- 猪圆谷润铬羽丰,派满歌甜四海赢
- 每天一个小技巧之Mac强制退出应用程序
- Java调用百度AI开放平台API
- 这一次,为广州扛旗举鼎的为什么是融创文旅城?
热门文章
- 2个鸡蛋100层楼/2个玻璃珠39层楼
- 图表点编辑数据无反应_解决word2013中插入图表之后无法保存和无法调出图表的编辑数据问题...
- 如何让c语言输出字符响一声,printf()用法
- 浅析微营销的几个成功模式
- 用selenium来下载小姐姐图片并保存
- 作业管理系统数据字典
- not enough arguments in call to oprot.Flush
- 解决ubuntu无法显示中文拼音
- linux获取文件后缀名,linux shell获取文件名和路径,basename/dirname/${}运用
- go扩展ticker实现优雅起停