Python之requests库

墨蓝 2023-09-28 13:09 20阅读 0赞

1. 基本使用

官网

1.1 安装

  1. pip install requests

1.2 response的属性以及类型

类型 :models.Response

r.text : 获取网站源码

r.encoding :访问或定制编码方式

r.url :获取请求的url

r.content :响应的字节类型

r.status_code :响应的状态码

r.headers :响应的头信息

1.3 示例:

1.3.1 get请求:

  1. import requests
  2. url = 'http://www.baidu.com'
  3. response = requests.get(url=url)
  4. # 一个类型和六个属性
  5. # Response类型
  6. print(type(response))
  7. # 设置响应的编码格式
  8. response.encoding = 'utf-8'
  9. # 以字符串的形式来返回了网页的源码
  10. print(response.text)
  11. # 返回一个url地址
  12. print(response.url)
  13. # 返回的是二进制的数据
  14. print(response.content)
  15. # 返回响应的状态码
  16. print(response.status_code)
  17. # 返回的是响应头
  18. print(response.headers)

1.3.2 get请求传递参数:

  1. import requests
  2. url = 'https://www.baidu.com/s'
  3. headers = {
  4. 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'
  5. }
  6. data = {
  7. 'wd':'北京'
  8. }
  9. # url 请求资源路径
  10. # params 参数
  11. # kwargs 字典
  12. response = requests.get(url=url,params=data,headers=headers)
  13. content = response.text
  14. print(content)
  15. # 总结:
  16. # (1)参数使用params传递
  17. # (2)参数无需urlencode编码
  18. # (3)不需要请求对象的定制
  19. # (4)请求资源路径中的?可以加也可以不加

1.3.3 post请求,百度翻译:

  1. import requests
  2. url = 'https://fanyi.baidu.com/sug'
  3. headers = {
  4. 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'
  5. }
  6. data = {
  7. 'kw': 'hello'
  8. }
  9. # url 请求地址
  10. # data 请求参数
  11. # kwargs 字典
  12. response = requests.post(url=url,data=data,headers=headers)
  13. content =response.text
  14. import json
  15. obj = json.loads(content,encoding='utf-8')
  16. print(obj)
  17. # 总结:
  18. # (1)post请求 是不需要编解码
  19. # (2)post请求的参数是data
  20. # (3)不需要请求对象的定制

1.3.4 代理请求

  1. import requests
  2. url = 'http://www.baidu.com/s?'
  3. headers = {
  4. 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36',
  5. }
  6. data = {
  7. 'wd':'ip'
  8. }
  9. proxy = {
  10. 'http':'212.129.251.55:16816'
  11. }
  12. response = requests.get(url = url,params=data,headers = headers,proxies = proxy)
  13. content = response.text
  14. with open('daili.html','w',encoding='utf-8')as fp:
  15. fp.write(content)

2. 真实网站模拟登录(仅学习使用)

注意修改账号、密码再进行测试

  1. import requests
  2. # 这是登陆页面的url地址
  3. url = 'https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx'
  4. headers = {
  5. 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'
  6. }
  7. # 获取页面的源码
  8. response = requests.get(url=url, headers=headers)
  9. content = response.text
  10. # 解析页面源码 然后获取_VIEWSTATE __VIEWSTATEGENERATOR
  11. from bs4 import BeautifulSoup
  12. soup = BeautifulSoup(content, 'lxml')
  13. # 获取该网站的隐藏域 _VIEWSTATE
  14. viewstate = soup.select('#__VIEWSTATE')[0].attrs.get('value')
  15. # 获取该网站的隐藏域 __VIEWSTATEGENERATOR
  16. viewstategenerator = soup.select('#__VIEWSTATEGENERATOR')[0].attrs.get('value')
  17. # 获取验证码图片
  18. code = soup.select('#imgCode')[0].attrs.get('src')
  19. code_url = 'https://so.gushiwen.cn' + code
  20. # 有坑
  21. # import urllib.request
  22. # urllib.request.urlretrieve(url=code_url,filename='code.jpg')
  23. # requests里面有一个方法 session() 通过session的返回值 就能使用请求变成一个对象
  24. session = requests.session()
  25. # 验证码的url的内容
  26. response_code = session.get(code_url)
  27. # 注意此时要使用二进制数据 因为我们要使用的是图片的下载
  28. content_code = response_code.content
  29. # wb的模式就是将二进制数据写入到文件
  30. with open('code.jpg', 'wb')as fp:
  31. fp.write(content_code)
  32. # 获取了验证码的图片之后 下载到本地 然后观察验证码 观察之后 然后在控制台输入这个验证码 就可以将这个值给
  33. # code的参数 就可以登陆
  34. code_name = input('请输入你的验证码')
  35. # 点击登陆
  36. url_post = 'https://so.gushiwen.cn/user/login.aspx?from=http%3a%2f%2fso.gushiwen.cn%2fuser%2fcollect.aspx'
  37. data_post = {
  38. '__VIEWSTATE': viewstate,
  39. '__VIEWSTATEGENERATOR': viewstategenerator,
  40. 'from': 'http://so.gushiwen.cn/user/collect.aspx',
  41. 'email': '123456',
  42. 'pwd': '123456',
  43. 'code': code_name,
  44. 'denglu': '登录',
  45. }
  46. response_post = session.post(url=url, headers=headers, data=data_post)
  47. content_post = response_post.text
  48. with open('gushiwen.html', 'w', encoding=' utf-8')as fp:
  49. fp.write(content_post)
  50. # 难点
  51. # (1) 隐藏域
  52. # (2) 验证码

3. 超级鹰打码平台

在这里插入图片描述

  1. import requests
  2. from hashlib import md5
  3. class Chaojiying_Client(object):
  4. def __init__(self, username, password, soft_id):
  5. self.username = username
  6. password = password.encode('utf8')
  7. self.password = md5(password).hexdigest()
  8. self.soft_id = soft_id
  9. self.base_params = {
  10. 'user': self.username,
  11. 'pass2': self.password,
  12. 'softid': self.soft_id,
  13. }
  14. self.headers = {
  15. 'Connection': 'Keep-Alive',
  16. 'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)',
  17. }
  18. def PostPic(self, im, codetype):
  19. """
  20. im: 图片字节
  21. codetype: 题目类型 参考 http://www.chaojiying.com/price.html
  22. """
  23. params = {
  24. 'codetype': codetype,
  25. }
  26. params.update(self.base_params)
  27. files = {
  28. 'userfile': ('ccc.jpg', im)}
  29. r = requests.post('http://upload.chaojiying.net/Upload/Processing.php', data=params, files=files,
  30. headers=self.headers)
  31. return r.json()
  32. def ReportError(self, im_id):
  33. """
  34. im_id:报错题目的图片ID
  35. """
  36. params = {
  37. 'id': im_id,
  38. }
  39. params.update(self.base_params)
  40. r = requests.post('http://upload.chaojiying.net/Upload/ReportError.php', data=params, headers=self.headers)
  41. return r.json()
  42. if __name__ == '__main__':
  43. chaojiying = Chaojiying_Client('超级鹰用户名', '超级鹰用户名的密码', '96001') # 用户中心>>软件ID 生成一个替换 96001
  44. im = open('a.jpg', 'rb').read() # 本地图片文件路径 来替换 a.jpg 有时WIN系统须要//
  45. print(chaojiying.PostPic(im, 1902)) # 1902 验证码类型 官方网站>>价格体系 3.4+版 print 后要加()

当前目录存放a.jpg验证码图片,修改账号、密码、软件ID直接运行即可

发表评论

表情:
评论列表 (有 0 条评论,20人围观)

还没有评论,来说两句吧...

相关阅读