网站建设服务哪个便宜啊,如何增加网站内链建设,导航类模板wordpress,互联网推广运营是干什么的1 爬虫介绍 2 requests模块快速使用 3 携带请求参数 4 url 编码和解码 4 携带请求头 5 发送post请求 6 携带cookie 7 响应对象 8 高级用法 1 爬虫介绍
# 爬虫是什么#xff1f;-网页蜘蛛#xff0c;网络机器人#xff0c;spider-在互联网中 通过 程序 自动的抓取数据 的过程…1 爬虫介绍 2 requests模块快速使用 3 携带请求参数 4 url 编码和解码 4 携带请求头 5 发送post请求 6 携带cookie 7 响应对象 8 高级用法 1 爬虫介绍
# 爬虫是什么-网页蜘蛛网络机器人spider-在互联网中 通过 程序 自动的抓取数据 的过程-根上使用程序 模拟发送http请求---》得到http响应---》把响应的数据解析出来---》存储起来# 做爬虫需要掌握的技术-web端爬虫(网页)-抓包-抓包工具---》浏览器charlesfiddler。。。-发送http请求的模块-requests同步的---》不仅仅做爬虫用 调用第三方api就可以使用-request-html-aiohttp异步的http模块-解析库http响应---》可能是xmlhtmljson文件图片。。。---》响应中解析出想要的数据-beautifulsoup4---》xml/html-lxml---xml/html-selenium---请求加解析本质是模拟浏览器-json-存储mysqlredisesmongodb。。。。-pymysql:aiomysql-redis:aioredis-elasticsearch.py-py-mongo-移动端爬虫(app)-抓包发请求解析存储跟web一样的-对app进行反编译---》jadx-安卓java写的app---》把app反编译成java---》懂java---》看懂逻辑---》使用python模拟这个过程-hook技术---》frida-c语言写加密---》用java调用c语言的加密方式---》xx.so--动态链接库文件-反编译 so文件---》IDA---》反编译成汇编和c-动态调试-python模拟这个过程即可-反扒-请求头反扒user-agentreferfer上一个访问的地址是什么-反扒无限调试-封ip---》ip代理池-封账号---》cookie池-js加密---》js逆向# 动态链接库# 百度谷歌 搜索引擎本质其实就是个大爬虫---》不停的在互联网上爬取页面---》存到自己的库中
使用搜索的时候---》去百度的数据库中查询相关的关键字----》显示在页面上---》当我们点击某一个---》真正的跳转到 真正的搜索到的页面百度做爬取时---》对动态页面的爬取权重要低
seo优化---》保证我们公司的网站通过关键字搜索显示在第一个-伪静态---》
sem付费买关键词 2 requests模块快速使用
#介绍使用requests可以模拟浏览器的请求比起之前用到的urllib(内置模块)requests模块的api更加便捷本质就是封装了urllib3# 注意requests库发送请求将网页内容下载下来以后并不会执行js代码这需要我们自己分析目标站点然后发起新的request请求-混合项目---》拿回来的页面---带数据-分离项目---》拿回来的页面--》数据是空的--》再分析接口---》再发请求才能拿到真正的数据-看到一个页面有数据---》用requests发送请求---》拿回来的可能跟看到的不一样# 安装pip install requests
# 快速使用import requests
resrequests.get(https://www.cnblogs.com/) # res中会有http响应 响应头的响应体的
print(res.text) # 响应体的文本字符串可能会乱码3 携带请求参数
# 2 get请求携带请求参数
# 方式一直接拼在后面
resrequests.get(https://www.cnblogs.com/?ordering-idsearch课程)
# 方式二使用params参数
resrequests.get(https://www.cnblogs.com/,params{ordering:-id,search:课程})
print(res.text)4 url 编码和解码
from urllib import parse# %E7%BE%8E%E5%A5%B3 不是乱码---》url编码了
# url解码
resparse.unquote(%E7%BE%8E%E5%A5%B3)
print(res)
# url编码
resparse.quote(刷币) # %E5%88%B7%E5%B8%81
print(res) 4 携带请求头
# 4 携带请求头
# 请求头中可能有的User-AgentreferercookieHost
header {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36
}
res requests.get(https://www.sogou.com/web?query%E7%BE%8E%E5%A5%B3, headersheader)
# resrequests.request(get,url,headersheader)
print(res.text)5 发送post请求
# 5 发送post请求
# 5.1 请求体中两种方式data{}---编码格式 urlencoded---》keyvaluekeyvalue json{}---》编码格式是json
resrequests.post(url)# 6 模拟登录
data {username: 616564099qq.com,password: lqz123,captcha: xxxx,ref: http://www.aa7a.cn/,act: act_login,
}
res requests.post(http://www.aa7a.cn/user.php, datadata)
print(res.text)6 携带cookie
# 7 请求携带cookie 1 请求头中 2 带在cookie参数中
方式一请求头中携带
header {Cookie: cto_bundle_DpLll9WcDY3UCUyRlBnWDZtZEp5MVFZZHVHeExtdmtwNjVVYkh6SUglMkZoVmFaSWFtc1JrZWo0aVRURzdOeUhTUHpTekslMkJ0RjRnOXhqOWhXM0piM0hXVFlVVk9MUGpNWFdCS0dveFBFSEhHVmJRV01uVWZ1bjloTU9YY2VwQWF2NWxFQWhkZnM5TERxMVlUUkt4WUo2dWR4QkZOMmclM0QlM0Q; _jzqx1.1691985966.1691985966.1.jzqsraa7a%2Ecn|jzqct/.-; ECS_IDa9bd0486ba5b0f2f65637f64719d72e75add4995; ECS[visit_times]8; _jzqa1.2593057364546894000.1672632545.1691985966.1698896326.9; _jzqc1; _jzqy1.1672632545.1698896326.1.jzqsrbaidu.-; _jzqckmp1; Hm_lvt_c29657ca36c6c88e02fed9a3978260381698896327; mediav%7B%22eid%22%3A%22179539%22%2C%22ep%22%3A%22%22%2C%22vid%22%3A%22%22%2C%22ctn%22%3A%22%22%2C%22vvid%22%3A%22%22%2C%22_mvnf%22%3A1%2C%22_mvctn%22%3A0%2C%22_mvck%22%3A1%2C%22_refnf%22%3A0%7D; __xsptplus422422.9.1698896372.1698896372.1%234%7C%7C%7C%7C%7C%23%23%23; Qs_lvt_2013221686282645%2C1691979017%2C1691979065%2C1698896326%2C1698896643; __xsptplusUT_4221; _qzjc1; ECS[username]616564099%40qq.com; ECS[user_id]61399; ECS[password]4a5e6ce9d1aba9de9b31abdf303bbdc2; _qzjb1.1698896326296.7.0.0.0; _qzjto7.1.0; _qzja1.1154697895.1672632545402.1691985966161.1698896326296.1698896649094.1698896661921.616564099%2540qq_com.1.0.23.8; Hm_lpvt_c29657ca36c6c88e02fed9a3978260381698896662; _jzqb1.18.10.1698896326.1; Qs_pv_2013221719398001187156200%2C1811149594340033000%2C1691949923920640300%2C4523589869790951000%2C2247541305320030700
}
res requests.get(http://www.aa7a.cn/,headersheader)
print(616564099qq.com in res.text) # 没有携带cookie 访问案例二自动点赞
data {linkId: 40480287
}
header {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36,Cookie: deviceIdweb.eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJqaWQiOiIwNGZlMmMxYy00Mjc4LTRlMzMtYjM5OS0zNTI0NTNiNzQ3ZDkiLCJleHBpcmUiOiIxNjgxNDQyNDI2ODUxIn0.k41tJ-jL5Y6TO4BabrtzUv8N35eLrfqfdvBdXEmtqxE; __snaker__idkNv5rzTfGa3xsaqh; YD00000980905869%3AWM_TIDslUolCNNTm5FRQRAEVaBfKlPbFQL7kFG; Hm_lvt_03b2668f8e8699e91d479d62bc7630f11698896819; gdxidpyhxdE4hhv3p0G9z1GUt%2BbmquM7o8uxAnU21e5Xv0hEnOwniLE617vQyijd%2FRfrVM3c8u%2Bb%2BSzE%2B612mU4JXDi6SwQC6tAIHEf9RPVR%2FZQB9AH0V4gazYRMoMlmhHeYBgfjGfe%2BhbYbX3x%2BdKE2dQUo1tJuYMCZr%2B8QdQapLAChI%5CbpM%2BhkIne%3A1698897721336; YD00000980905869%3AWM_NI817ayMhIabFSD%2BFdoaOokCH5%2FLBINb0apxw2XgvsY2zLJrWi0bgIB1eE%2FAPrdZIt4NVgofeOgPy92Y73HLGf70hYzYHH%2BKz%2FlrsYT9j4KFUbo6Vx4OY6R6o0nZ7HJYrTYm0%3D; YD00000980905869%3AWM_NIKE9ca17ae2e6ffcda170e2e6eeccea7c97bff99ad04eb3bc8bb6c44f839a8e83d463b889f8b9c25ebc868ad5f52af0fea7c3b92afceff982fc47ac97af83c55988f58a85ee6b8db1a5a4cb3fed948eaacd6af4bfc099f63a9cb9ba94dc3aba948693d663f4bea9aac13ba79be1a2d37aa8868795b74696b9a187e845a590b7dab153f5ed88adc66ef5f0a8baf9538c98e5acf925b0aebdbad733aaec85a7d86aadea9a99b7459bea9ed7ee3cae86f9a9c953b28c978eb337e2a3; tokeneyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJqaWQiOiJjZHVfNTMyMDcwNzg0NjAiLCJleHBpcmUiOiIxNzAxNDg4ODM3Nzg0In0.3zOo3zk8OEO2kmYOX2ExY_oc6wm3eeM0y9VUyA4er-w; Hm_lpvt_03b2668f8e8699e91d479d62bc7630f11698896838
}res requests.post(https://dig.chouti.com/link/vote, datadata, headersheader)
print(res.text)# 方式二使用cookie参数
-在utils.py中
def cookie_str_to_cookie_dict(s):# l s.split(;) # 得到一个列表# d {}# for item in l:# d[item.split()[0]] item.split()[1]# print(d)# res requests.get(http://www.aa7a.cn/, cookiesd)# 字典推导式return {item.split()[0]: item.split()[1] for item in s.split(;)}
-字符串转字典
from utils import cookie_str_to_cookie_dict
s cto_bundle_DpLll9WcDY3UCUyRlBnWDZtZEp5MVFZZHVHeExtdmtwNjVVYkh6SUglMkZoVmFaSWFtc1JrZWo0aVRURzdOeUhTUHpTekslMkJ0RjRnOXhqOWhXM0piM0hXVFlVVk9MUGpNWFdCS0dveFBFSEhHVmJRV01uVWZ1bjloTU9YY2VwQWF2NWxFQWhkZnM5TERxMVlUUkt4WUo2dWR4QkZOMmclM0QlM0Q; _jzqx1.1691985966.1691985966.1.jzqsraa7a%2Ecn|jzqct/.-; ECS_IDa9bd0486ba5b0f2f65637f64719d72e75add4995; ECS[visit_times]8; _jzqa1.2593057364546894000.1672632545.1691985966.1698896326.9; _jzqc1; _jzqy1.1672632545.1698896326.1.jzqsrbaidu.-; _jzqckmp1; Hm_lvt_c29657ca36c6c88e02fed9a3978260381698896327; mediav%7B%22eid%22%3A%22179539%22%2C%22ep%22%3A%22%22%2C%22vid%22%3A%22%22%2C%22ctn%22%3A%22%22%2C%22vvid%22%3A%22%22%2C%22_mvnf%22%3A1%2C%22_mvctn%22%3A0%2C%22_mvck%22%3A1%2C%22_refnf%22%3A0%7D; __xsptplus422422.9.1698896372.1698896372.1%234%7C%7C%7C%7C%7C%23%23%23; Qs_lvt_2013221686282645%2C1691979017%2C1691979065%2C1698896326%2C1698896643; __xsptplusUT_4221; _qzjc1; ECS[username]616564099%40qq.com; ECS[user_id]61399; ECS[password]4a5e6ce9d1aba9de9b31abdf303bbdc2; _qzjb1.1698896326296.7.0.0.0; _qzjto7.1.0; _qzja1.1154697895.1672632545402.1691985966161.1698896326296.1698896649094.1698896661921.616564099%2540qq_com.1.0.23.8; Hm_lpvt_c29657ca36c6c88e02fed9a3978260381698896662; _jzqb1.18.10.1698896326.1; Qs_pv_2013221719398001187156200%2C1811149594340033000%2C1691949923920640300%2C4523589869790951000%2C2247541305320030700
res requests.get(http://www.aa7a.cn/, cookiescookie_str_to_cookie_dict(s))
print(616564099qq.com in res.text) # 没有携带cookie 访问# 登录成功---》响应头中有cookie
data {username: 616564099qq.com,password: lqz123,captcha: xxxx,ref: http://www.aa7a.cn/,act: act_login,
}
res requests.post(http://www.aa7a.cn/user.php, datadata)
print(res.text)
print(type(res.cookies.get_dict())) # 登录成功的cookieRequestsCookieJar 本质就是字典
from requests.cookies import RequestsCookieJar# 拿到登录后的cookie再向首页发送请求
res requests.get(http://www.aa7a.cn/, cookiesres.cookies)
print(616564099qq.com in res.text) # 没有携带cookie 访问#### 8 session 的使用---》原来每次都需要手动携带cookie
from requests import Session
sessionSession()
data {username: 616564099qq.com,password: lqz123,captcha: xxxx,ref: http://www.aa7a.cn/,act: act_login,
}
res session.post(http://www.aa7a.cn/user.php, datadata)
res session.get(http://www.aa7a.cn/) # 可以自动处理cookie不需要手动携带
print(616564099qq.com in res.text)7 响应对象
#### 9 响应对象http请求---》python中---》变成了俩对象---》request对象 response对象
后端django request---》http请求被包装成了python的对象四件套----》http的响应被包装成了response
爬虫request对象---》request.get --- request.get---》http请求response对象---》返回的数据---》http响应包装成了response对象后端和前端所叫的 request和response虽然不是同一个类的对象但是他们的内容基本一致---》本质都是http请求和响应
# respone requests.get(http://www.aa7a.cn/)
#
# print(type(respone))# 类的属性跟方法
# from requests.models import Response
# print(respone.text) # 响应体转成了字符串
# print(respone.content) # 响应体的二进制
# print(respone.status_code) # 响应状态码
# print(respone.headers) # 响应头
# print(respone.cookies)# 响应cookie
# print(respone.cookies.get_dict())
# print(respone.cookies.items()) # 响应cookie---》转成key-value形式
#
# print(respone.url) # 请求地址
# print(respone.history) # 了解访问过的地址 针对于 重定向的情况才会有值
#
# print(respone.encoding) # 响应编码# 下载一个视频
respone requests.get(https://img3.chouti.com/CHOUTI_231102_8B10E74FBE2646748DE951D4EAB1F1E7.jpg)
# print(respone.content)
# 保存到本地--》就是这张图片
with open(致命诱惑.jpg, wb) as f:# f.write(respone.content)# for line in respone.iter_content(1024):for line in respone.iter_content():f.write(line)8 高级用法
## 10 高级用法
# 1 关于https报错问题以后访问https地址时可以会报错访问https需要携带证书---》没带就会报错
不携带证书---》不报错
responerequests.get(https://www.12306.cn,verifyFalse) #不验证证书,报警告,返回200# import urllib3
# urllib3.disable_warnings()
# responerequests.get(https://www.12306.cn,verifyFalse)
# print(respone.text)# 2 超时设置
# import requests
# responerequests.get(https://www.baidu.com,timeout0.0001)# 3 认证设置 ---》不需要知道了现在没有这种了---》不是前端认证# 4 异常处理# 5 上传文件
# import requests
#
# files {file: open(a.jpg, rb)}
# respone requests.post(http://httpbin.org/post, filesfiles)
# print(respone.status_code)# 后端存储 request.FILES.get(file)