requests的基础使用

发布时间 2023-07-10 21:46:29作者: 抱紧小洪

爬虫介绍

#  爬虫:又称网络蜘蛛,spider,一堆程序,从互联网中抓取数据----》数据清洗---->入库


# 爬虫需要掌握的知识
	-抓取数据:发送网络请求(http),获得响应(http响应,响应头,响应体---》真正重要的数据在响应体中)
    	-python模块:requests,selenium
        
    -清洗数据:解析拿回来的数据---》json,xml,html,二进制
    	-json解析,xml解析。。。
        -python模块:re,json,beautifulsoup4(bs4),lxml,selenium
        
    -入库:存文件,存mysql,redis,mongodb
    	-python模块:file,pymsql,redis-py,pymongo
# 反扒
	-频率限制
    -封ip(代理池),封账号(一堆小号:cookie池)
    -请求头中带加密信息,referer,user-agent。。。
    -响应回来的数据是加密
    -验证码反扒(破解验证码---》第三方平台)
    -js加密---》压缩---》加密方法其实在前端能看到---》看上去很晦涩
    -手机设备:唯一id号

    
# 搜索引擎都是大爬虫
	-百度输入框搜索---》美女---》去百度的数据库搜索----》显示在页面上
    -百度一刻不停的在互联网中爬网页,爬完存到它的数据库
    	-seo优化:免费排中,排靠前
        -sem优化:搜出来的靠前的,带广告的是花钱的,买断关键词
            
 #可见即可爬

requests模块介绍和快速使用

# requests是模拟发送http请求的模块
	-不仅仅可以做爬虫
    -后端服务,请求别人服务
   
# pip3 install requests

# 使用requests发送get请求
import requests
# res 响应对象,http响应,python包装成了对象,响应头,响应头。。。在res中都会有
res=requests.get('https://www.cnblogs.com/liuqingzheng/p/16005866.html')
print(res.text) # 响应体转成字符串

get请求携带参数

# res = requests.get('http://www.aa7a.cn/?name=xxx&age=18')
# res = requests.get('http://www.aa7a.cn/',params={'name':'xxx',"age":18})
res = requests.get('https://www.baidu.com/s?wd=%E7%BE%8E%E5%A5%B3')
print(res.text)  # 响应体转成字符串
print(res.url)  # http://www.aa7a.cn/?name=xxx&age=18

url的编码和解码

from urllib.parse import quote,unquote
res = unquote('%E7%BE%8E%E5%A5%B3')
print(res)

携带请求头

# 发送get请求,有的网站,拿不到数据,模拟的不像,请求头的数据没有携带
# 请求头:1 User-Agent:客户端类型  2 referer :上一个页面的地址  3 cookie
header = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
}
res = requests.get('http://www.aa7a.cn/',headers=header)
print(res.text)

发送post请求,携带数据

header = {
    'Referer': 'http://www.aa7a.cn/user.php?&ref=http%3A%2F%2Fwww.aa7a.cn%2Fuser.php%3Fact%3Dlogout',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
}

data = {
    'username': '1535114884@qq.com',
    'password': '111111',
    'captcha': 'xxxx',
    'remember': 1,
    'ref': ' http://www.aa7a.cn/',
    'act': 'act_login'
}
# data,json请求体的数据
# 编码方式是 urlencoded
# res = requests.post('http://www.aa7a.cn/user.php', data=data, headers=header)
# # 编码是json格式
# # res = requests.post('http://www.aa7a.cn/user.php',json=data,headers=header)
# print(res.text)

携带cookie两种方式

# 方式一:携带在请求头中
# header = {
#     'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36',
#     'Cookie':'deviceId=web.eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJqaWQiOiI2Mzk1OTEzMS1lMzE2LTRlNmItYWFlNi1mNDM0ZTEzZDQ4MzkiLCJleHBpcmUiOiIxNjkxMjIxODQ3NjAwIn0._tWo9ROyqRWXNCJA-ogCZ8MRBl4S-7tbB2wr6wLwci4; Hm_lvt_03b2668f8e8699e91d479d62bc7630f1=1688629848; __snaker__id=GmosTb6BqFJK2NsT; gdxidpyhxdE=bI5WeJdvSvxuozJLw6Sodah8g4wSXI%5CAGHA1Cn%2B573j5p5u3tTcpHw%2FKVWuoso76x2V1fxENE7jUBh%2FBZhMLRoXQdnvjcwO93W0A0QguQWpzQOGz6YiWdmXcJAbzpyI0flcPKu0o%2FajAM6spZ5gpHe2toaoZwaLt%5Cwm33oG19TcPouGk%3A1688630760372; YD00000980905869%3AWM_NI=hz7CdBywrI1ITXj%2BeDEs8Mphu1liSwPzyqW6zkG91wDDx50X1EV6qH%2FhEETlFaDIAXf4Rv2WI5bV6RCLGvy0zPMK7LULYiuRGg0HqFJuv9fgjQXVgpEy5gfhV02dVnM6Mlo%3D; YD00000980905869%3AWM_NIKE=9ca17ae2e6ffcda170e2e6ee91cb47aa9e8c94e245e9968ab2c85e838f9bb1c53cf4b397a4e173bba7b898ca2af0fea7c3b92aaca6f9a4e74abba9beaab4439888a6cce85087adf8aef364b7efa48ad27d94a6b792d63ebab589dab47d889cb8d6b354f39b9ad7f444edb88ba6d76886bf8caac454a6ec9e97b15d8bebaeb7b55a81948997fc3cba9083acb6489794978af85a85b900a9f44e8aabbadae56daa8f98b7e67c87a7fb88e56496f0fe85d5668fea838dee37e2a3; YD00000980905869%3AWM_TID=6PefENQWNmhBAAVQQUPQlgzdWOzmnwwf; token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJqaWQiOiJjdHVfNjg4NjI5OTM5MjkiLCJleHBpcmUiOiIxNjkxMjIxOTM5MzgxIn0.15Hu6OOKG9oMqsjiD_Wla0Wv15ibXNSM62cvdlXUDYg; Hm_lpvt_03b2668f8e8699e91d479d62bc7630f1=1688629965',
# }
# data = {
# 'linkId': '39196722'
# }
# res = requests.post('https://dig.chouti.com/link/vote', headers=header,data=data)
# print(res.text)

# 方式二:
# res1 = requests.get('http://www.aa7a.cn/',cookies=cookie)