回顾: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请求参数小总结相关推荐

  1. 【原理+实战+视频+源码】docker权限参数

    一面: 个人介绍加项目介绍20分钟 微服务架构是什么,它的优缺点? ACID CAP BASE理论 分布式一致性协议,二段.三段.TCC,优缺点 RPC过程 服务注册中心宕机了怎么办? 微服务还有其他 ...

  2. 爬虫入门实战第一站——梨视频视频爬取

    爬虫入门实战第一站--梨视频视频爬取 简介 博主最近重新开始了解爬虫,想以文字方式记录自己学习和操作的过程.本篇文章主要是使用爬虫爬取梨视频网站中的视频并下载到本地,同时将视频简介和视频网站保存在ex ...

  3. Python爬虫的案例分析(梨视频下载)

    我们对梨视频的站点进行分析.得出如下结论:视频地址如下,但是在源码中并没有看到,也就得出这个页面是二次渲染.我们通过浏览器,找到返回视频地址的接口 通过比对,返回的视频接口和播放地址,以及视频的初始u ...

  4. 30亿流量!梨视频靠什么拍出个“短视频世界杯元年”

    前队友曝千万别去C罗家吃饭,日本球迷赛后捡垃圾,韩国球迷攻占青瓦台官网,俄罗斯世界杯表现太好,美国要求对俄额外药检--2018年世界杯开赛以来,梨视频推出的一个个千万级短视频引爆全网. 近日,梨视频晒 ...

  5. 5 爬虫 异步协程 梨视频

    # 如何提升requests模块爬取数据的效率?- 多进程或多线程(不建议) 太耗费资源- 线程池或进程池(适当使用) - 单线程 + 异步协程(推荐) # 线程池使用案例 # 梨视频 下载作业 im ...

  6. python scrapy爬虫视频_python爬虫scrapy框架的梨视频案例解析

    之前我们使用lxml对梨视频网站中的视频进行了下载 下面我用scrapy框架对梨视频网站中的视频标题和视频页中对视频的描述进行爬取 分析:我们要爬取的内容并不在同一个页面,视频描述内容需要我们点开视频 ...

  7. Python爬虫下载视频(梨视频)

    梨视频示例:Ctrl+Alt+L格式化代码 import re import requests import hashlib import time # print(respose.status_co ...

  8. python梨视频爬虫下载,反反爬

    python梨视频爬虫下载,反反爬 跟着b站视频学习,发现和视频里面讲的不一样 视频URL改成ajax异步请求得到的 拿到视频url之后发现居然是个假链接不是真实的 仔细观察真实的视频url发现,刚才 ...

  9. python爬虫下载梨视频

    import requests import re import os from urllib.request import urlretrieve def download_vedio():'''下 ...

最新文章

  1. 一文梳理深度学习算法演进
  2. 上周日的讲稿: Debian Packaging
  3. 使用PowerShell deprovision O365 资源
  4. MS SQL入门基础:数据查询--SELECT语句
  5. linux mysql 分区_Linux :linux磁盘分区(普通分区2T以内),安装免安装版mysql(tar.gz)...
  6. c语言一级考试题目第四季度,模拟试题8套
  7. Python笔记:使用pywin32处理excel文件
  8. FPGA测试方法以Mentor工具为例
  9. spss分析方法-主成分分析
  10. 安卓bochs安装linux教程,Ubuntu 14.04 LTS 安装和配置Bochs
  11. 计算机自然语言处理的原理,什么是自然语言处理(NLP)?
  12. java毕业设计鸿鹄教育培训mybatis+源码+调试部署+系统+数据库+lw
  13. cscd期刊计算机排名,计算机CSCD核心期刊.pdf
  14. WiFi接口(1)——模块适配(AW-CM358)
  15. 毕业两年,只会Crud,侥幸通过面试定级 P6,没想到我也可以入职阿里!(面经分享)
  16. 微软跟投,估值31.5亿美元的光量子计算公司刚刚完成4.5亿美元融资
  17. 猪圆谷润铬羽丰,派满歌甜四海赢
  18. 每天一个小技巧之Mac强制退出应用程序
  19. Java调用百度AI开放平台API
  20. 这一次,为广州扛旗举鼎的为什么是融创文旅城?

热门文章

  1. 2个鸡蛋100层楼/2个玻璃珠39层楼
  2. 图表点编辑数据无反应_解决word2013中插入图表之后无法保存和无法调出图表的编辑数据问题...
  3. 如何让c语言输出字符响一声,printf()用法
  4. 浅析微营销的几个成功模式
  5. 用selenium来下载小姐姐图片并保存
  6. 作业管理系统数据字典
  7. not enough arguments in call to oprot.Flush
  8. 解决ubuntu无法显示中文拼音
  9. linux获取文件后缀名,linux shell获取文件名和路径,basename/dirname/${}运用
  10. go扩展ticker实现优雅起停