700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Spider爬虫入门(发送Get Post请求 携带请求头 Cookie Session 响应Response 获

Spider爬虫入门(发送Get Post请求 携带请求头 Cookie Session 响应Response 获

时间:2018-09-20 23:36:15

相关推荐

Spider爬虫入门(发送Get Post请求 携带请求头 Cookie Session 响应Response 获

文章标题

一、爬虫介绍二、Requests模块发送Get请求三、Get请求携带参数四、携带请求头五、携带Cookie六、发送Post请求七、响应Response八、获取二进制数据九、解析Json数据

一、爬虫介绍

爬虫:Spider 网络蜘蛛 爬虫也叫网页蜘蛛,网络机器人,就是模拟客户端发送网络请求,获取请求对应的响应,一种按照一定规则,自动抓取互联网信息的程序。

本质原理

现在所有的软件原理大部分都是基于http请求发送和获取数据的,模拟发送http请求从别人的服务端获取数据。绕过反扒不同程序反扒措施不一样比较复杂。

爬虫是否合法?

爬虫协议:每个网站根路径下都有robots.txt,这个文件规定了 该网站 哪些可以爬取 哪些不能爬

二、Requests模块发送Get请求

模拟发送http请求的模块:requests 不仅仅做爬虫用它,调用第三方接口,也是要用它

安装Requests

pip install requests

模拟使用:

import requestsres = requests.get('/MeiJin_')print(res.text) # http响应体文本内容 从此解析到想要的数据 入库!

延时知识点:短链接

可以延伸短链接 底层原理一个很长的链接发送请求 数据保存到本地 生成链接

三、Get请求携带参数

方式一

直接在请求地址中添加 ?info='Like'res = requests.get('/?info=%27%E6%83%B3%E8%A6%81%E7%9A%84%E4%BF%A1%E6%81%AF%27')print(res.text)

方式二

使用params参数携带res = requests.get('/s', params={'info1': 'Like','info2': 'Boys',}) # 实际请求地址是 /s?info1=Like&info2Boysprint(res.text)

URL编码与解码

从地址栏里拿出数据 都会被Url进行编码和解码from urllib import parse # 内置模块info1 = parse.quote('Mr.梅')# 编码info2 = parse.unquote('Mr.%E6%A2%85') # 解码print(info1) # Mr.%E6%A2%85print(info2) # Mr.梅

四、携带请求头

朝地址发送请求 会在请求头中看到我们的信息 型号不一样 这个内容是不一样的

header = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'} User-Agent:客户端类型:有浏览器、手机端浏览器、爬虫类型,程序,scrapy一般伪造成浏览器

模拟使用

header = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'} res=requests.get('/',headers=header)print(res.text)

我们爬去某个网站 发送请求不能正常返回说明模拟的不够 只要数据对应的上就能返回对应的数据

一般网站可以通过Referer来做反扒如果要登录,模拟向登录接口发请求,正常操作必须在登录页面上才能干这事

如果没有携带referer,它就认为你是恶意的就会拒绝。

五、携带Cookie

方式一

模拟抽屉网点赞信息data = {'linkId': '37001777'}# 发送请求我们可以获得到账号IDheader = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)AppleWebKit/537.36(KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36','Cookie': 'deviceId=web.eyJ0eXAiOiJKV1Qixxxxxxxxxxxxxxxxxxxxxxxxxxx.........}res = requests.post('/link/vote', data=data, headers=header)print(res.text)

方式二

通过cookie参数:因为cookie很特殊,一般都需要携带,模块把cookie单独抽取成一个参数,是字典类型,以后可以通过参数传入data = {'linkId': '37001777'}# 发送请求我们可以获得到账号IDheader = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)AppleWebKit/537.36(KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36',}res = requests.post('/link/vote', data=data, headers=header, cookies={'key': 'value'})print(res.text)# cookies格式都是字典格式 按照输入即可

六、发送Post请求

方式一

先发送错误登录请求 看返回数据是否对错 输入对的密码 获取cookie 通过Cookie登录data = {'username': 'xxxxx','password': 'xxxxx', # 错误的 请求码是 error 5 正确的是0'captcha': 'cccc','remember': 1,'ref': '/','act': 'act_login'}res = requests.post('/user.php', data=data)print(res.text)# {"error":0,"ref":"/"}print(res.cookies) # RequestCookieJar对象响应头中得cookie,如果正常登录,这个cookie 就是登录后的cookieres2 = requests.get('/', cookies=res.cookies) # 访问首页,携带cookie,# res2 = requests.get('/')print('xxxxUsername' in res2.text)

方式二

data = {'username': 'xxxxx','password': 'xxxxx', # 错误的 请求码是 error 5 正确的是0'captcha': 'cccc','remember': 1,'ref': '/','act': 'act_login'}res = requests.post('/user.php', json= {"key": "Value"})

request.session的使用:当request使用,但是它能自动维护cookie

session = requests.session()data = {'username': 'xxxxx','password': 'xxxxx', # 错误的 请求码是 error 5 正确的是0'captcha': 'cccc','remember': 1,'ref': '/','act': 'act_login'}res = session.post('/user.php', data=data)res1 = session.get('')print('xxxxUsername' in res1.text)

七、响应Response

import requests # Response对象有很多属性和方法header = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)AppleWebKit/537.36(KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36',}respone = requests.get('', params={'name': 'Like', 'age': 20}, headers=header)# respone属性print(respone.text) # 响应体的文本内容print(respone.content) # 响应体的二进制内容print(respone.status_code) # 响应状态码print(respone.headers) # 响应头print(respone.cookies) # 响应cookieprint(respone.cookies.get_dict()) # cookieJar对象,获得到真正的字段print(respone.cookies.items()) # 获得cookie的所有key和value值print(respone.url) # 请求地址print(respone.history) # 访问这个地址,可能会重定向,放了它冲定向的地址print(respone.encoding) # 页面编码

八、获取二进制数据

获取二进制数据 图片

res = requests.get('/image_search/src=http%3A%2F%%2Fedpic_source%2F81%2F71%2F2b%2F81712bdce2d6966b9942f249031aba8e.jpg&refer=http%3A%2F%&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1671809061&t=bc2a02c107ba2835560c30bb4811c822')with open('MeiNu.jpg', 'wb')as f:f.write(res.content)

获取二进制视频

res=requests.get('/mda-mk21ctb1n2ke6m6m/sc/cae_h264/1635901956459502309/mda-mk21ctb1n2ke6m6m.mp4')with open('美女.mp4', 'wb') as f:for line in res.iter_content():f.write(line)

九、解析Json数据

res = requests.get('https://api./place/v2/search?ak=6E823f587c95f0148c19993539b99295&region=%E4%B8%8A%E6%B5%B7&query=''%E8%82%AF%E5%BE%B7%E5%9F%BA&output=json')print(res.text)print(type(res.text))print(res.json()['results'][0]['name'])print(type(res.json()))

技术小白记录学习过程,有错误或不解的地方请指出,如果这篇文章对你有所帮助请点点赞收藏+关注谢谢支持 !!!

Spider爬虫入门(发送Get Post请求 携带请求头 Cookie Session 响应Response 获取二进制数据 解析Json数据)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。