1.发送post请求方法
import requests
url=""
response=requests.post(url,data)
#data是一个字典
向金山翻译发送post请求
import requests
import json
class King(object,word):
#初始化
def __init__(self,word):
self.url="https://ifanyi.iciba.com/index.php?c=trans&m=fy&client=6&auth_user=key_web_fanyi&sign=ac4d9d34d3a63952"
self.headers={
"User-Agent":"Mozilla / 5.0(Windows NT 10.0; Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 114.0.0.0Safari / 537.36"
}
self.data={
'f':"auto",
't':"auto",
'w':word
}
def post_data(self):
#使用post方法发送一个post请求,data为请求体的字典
response = requests.post(self.url,data=self.data,headers=self.headers)
return response.content
def parse_data(self,data):
dict_data=json.loads(data)
try:
print(dict_data['content']['out'])
except:
print(dict_data['content']['word_mean'][0])
def run(self):
#编写爬虫逻辑
#url
#headers
#data字典发送post请求
#发送请求获取响应
response=self.post_data()
print(response)
#数据解析
self.parse_data(response)
#实例化
if __name__=="__main__":
word=input('请输入要翻译的单词')
king=King(word)
king.run()
2.post数据来源
1.固定值:抓包比较,不变化的值
2.输入值:抓包比较,根据自身变化值
3.预设值-静态文件中:需要提前从静态html中获取,通过正则获取,构造到data字典中
4.预设值-发请求:需要对指定地址发送请求
5.在客户端生成的:分析js,模拟生成数据
3.requests.session进行状态保持
requests模块中的Session类能够自动处理发送请求获取响应过程中产生的cookie,进而达到状态保持的目的
resqusts.session的作用: 自动处理cookie,即下一次请求会带上前一次的cookie requests.session的适应场景: 自动处理连续的多次请求过程中产生的cookie
登录github
import requests
import re
def login():
#session
session=requests.session()
#headers
session.headers={
'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'
}
#url1获取token
url1 = "https://github.com/login"
#发送请求获取响应
res_1=session.get(url1).content.decode()
#正则提取
#导入正则模块
token=re.findall('name="authenticity_token" value=".*?" />')[0] #findall获取的是列表
print(token)
#url2登录
url2 = "https://github.com/session"
#构建表单数据
data={
#抓包得到的字典from data 表单数据
}
#发送请求登录
session.post(url2,data=data)
#url3验证
url3=''
response=session.get(url3)
with open('github.html','wb')as f:
f.write(response.content)
if __name__=='__main__':
login()