python爬虫—requests

news2024/9/21 14:35:56

一、安装

pip install requests

二、基本使用

1、基本使用

类型 : models.Response
r.text : 获取网站源码
r.encoding :访问或定制编码方式
r.url :获取请求的 url
r.content :响应的字节类型
r.status_code :响应的状态码
r.headers :响应的头信息

import requests
 
url = 'http://www.baidu.com'
 
response = requests.get(url=url)
 
# 一个类型 六个属性
# Response 类型
print(type(response))
 
# 设置响应的编码格式
response.encoding = 'utf-8'
 
# 以字符串形式返回网页源码
print(response.text)
 
# 返回url地址
print(response.url)
 
# 返回的是二进制的数据
print(response.content)
 
# 返回响应的状态码
print(response.status_code)
 
# 返回的是响应头
print(response.headers)

2、与urllib区别


# urllib
# (1) 一个类型以及六个方法
# (2)get请求
# (3)post请求   百度翻译
# (4)ajax的get请求
# (5)ajax的post请求
# (6)cookie登陆 微博
# (7)代理


# requests
# (1)一个类型以及六个属性
# (2)get请求
# (3)post请求
# (4)代理
# (5)cookie  验证码


import requests

url = 'https://www.baidu.com/s'

headers = {
    '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'
}

data = {
    'wd':'北京'
}



############################### GET ##########################

# url  请求资源路径
# params 参数
# kwargs 字典
response = requests.get(url=url,params=data,headers=headers)

content = response.text

print(content)

# 总结:
# (1)参数使用params传递
# (2)参数无需urlencode编码
# (3)不需要请求对象的定制
# (4)请求资源路径中的?可以加也可以不加





############################# POST ##########################

# url 请求地址
# data 请求参数
# kwargs 字典
response = requests.post(url=url,data=data,headers=headers)

content =response.text

import json

obj = json.loads(content,encoding='utf-8')
print(obj)

# 总结:
# (1)post请求 是不需要编解码
# (2)post请求的参数是data
# (3)不需要请求对象的定制

 

三、代理

import requests
 
url = 'http://www.baidu.com/s?'
 
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36',
}
 
data = {
    'wd' : 'ip'
}
 
proxy = {
    'http':'120.194.55.139:6969'
}
 
response = requests.get(url=url,params=data,headers=headers,proxies=proxy)
 
content = response.text
 
with open('daili.html','w',encoding='utf-8')as fp:
    fp.write(content)

四、cookie定制(破解验证码)

找登录接口

 找参数的值

python代码

import requests
 
# 登录页面的url地址
url = 'https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx'
 
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36',
}
 
# 获取页面的源码
response = requests.get(url=url,headers=headers)
content = response.text
 
# 解析页面源码  获取__VIEWSTATE  __VIEWSTATEGENERATOR      这里使用bs4解析
from bs4 import BeautifulSoup
 
soup = BeautifulSoup(content,'lxml')
 
#   获取__VIEWSTATE
viewstate = soup.select('#__VIEWSTATE')[0].attrs.get('value')
#   获取__VIEWSTATEGENERATOR
viewstategenerator = soup.select('#__VIEWSTATEGENERATOR')[0].attrs.get('value')
 
# 接下来处理验证码
# 获取验证码图片
code = soup.select('#imgCode')[0].attrs.get('src')
code_url = 'https://so.gushiwen.cn' + code
 
# 下载验证码图片
# import urllib.request
# urllib.request.urlretrieve(url=code_url,filename='code.jpg')
# 使用上面方法下载验证码后会使验证码更新,从而使的每次都会提醒验证码错误
# requests里面有个方法session() 通过session的返回值就能使请求变为一个对象
session = requests.session()
# 验证码的url地址
response_code = session.get(code_url)
# 注意此时要使用二进制的数据 因为我们要是用的是图片的下载
content_code = response_code.content
# wb的模式就是将二进制的数据写到文件
with open('code.jpg','wb')as fp:
    fp.write(content_code)
 
 
# 获取了验证码的图片之后 下载到本地 然后观察验证码 然后在控制台输入这个验证码 就可以将这个值给code的参数
code_name = input('请输入你的验证码:')
 
 
# 点击登录
url_post = 'https://so.gushiwen.cn/user/login.aspx?from=http%3a%2f%2fso.gushiwen.cn%2fuser%2fcollect.aspx'
 
data_post = {
    '__VIEWSTATE': viewstate,
    '__VIEWSTATEGENERATOR': viewstategenerator,
    'from': 'http://so.gushiwen.cn/user/collect.aspx',
    'email': '自己账号',
    'pwd': '自己密码',
    'code': code_name,
    'denglu': '登录'
}
 
response_post = session.post(url=url_post,headers=headers,data=data_post)
 
content_post = response_post.text
 
with open('gushiwen.html','w',encoding='utf-8')as fp:
    fp.write(content_post)

 五、破解验证码——超级鹰(公司级别)

登录超级鹰官网:超级鹰验证码识别-专业的验证码云端识别服务,让验证码识别更快速、更准确、更强大

若之前没有注册,则需要注册新的用户,并且进行充值。

 进入 用户中心 后点击 开发文档

选择袭击使用的语言案例。

 下载好压缩包解压,并且把一下两个文件在pycharm中打开。

  代码中修改如下四处地方。

软件ID的获取方法如下:

进入用户中心  --> 软件id  -->  生成软件ID --> 复制软件id到代码中

 到此,运行代码就可以自动识别图片中的验证码了。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/959693.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在Mac终端使用unrar和rar 解压和压缩软件

1、首先从rarlab 网站下载 rar / unrar 工具 rarlab网站: https://www.rarlab.com/download.htm 2、解压缩下载的 tar.gz 压缩包(rarmacos-x64-623.tar.gz),在下载目录downloads下自动创建一个rar的目录,其…

应用案例 | 基于三维机器视觉的机器人麻袋拆垛应用解决方案

​Part.1 项目背景 在现代物流和制造行业中,麻袋的拆垛操作是一个重要且频繁的任务。传统的麻袋拆垛工作通常由人工完成,分拣效率较低,人力成本较高,现场麻袋堆叠、变形严重,垛型不规则、不固定,严重影响分…

利用随机数生成猜数字游戏【C语言】

猜数字游戏实现 游戏要求生成随机数rand 函数srand 函数time 函数 确定生成随机数的范围猜数字游戏实现 游戏要求 自动生成随机数的范围:0-99玩家猜数字,猜数字的过程中,根据猜测数据的大小给出大了或小了的反馈,直到猜对&#x…

JavaScript Web APIs - 05 Window对象 、本地存储

Web APIs - 05 文章目录 Web APIs - 05js组成window对象定时器-延迟函数location对象navigator对象histroy对象本地存储(今日重点)localStorage(重点)sessionStorage(了解)localStorage 存储复杂数据类型 综…

unity面试题(基础篇)

事件函数的执行顺序 事件函数的执行顺序 - Unity 手册运行 Unity 脚本会按预定顺序执行大量事件函数。本页面将介绍这些事件函数,并说明它们的执行顺序。https://docs.unity.cn/cn/2019.4/Manual/ExecutionOrder.html 加载第一个场景 Awake:始终在任何 Start 函数之前并在实…

Linux(CentOS7)下如何配置多个Tomcat容器?

一、在 liunx 系统安装 jdk 1、安装jdk(yum install 安装) 查看是否系统是否自带jdk并卸载 rpm -qa |grep java rpm -qa |grep jdk rpm -qa |grep gcj 其中,GCJ是GNU的Java编译器,可以把java程序编译成本地代码,编译成功后的可…

Linux中安装MySQL5.7.42

1. 首先,下载mysql5.7.42的安装包(下方是下载地址),选择红色框框的下载(注意的是,这个链接只提供5.7的版本下载,可能还会更新,不一定打开就是5.7.42的版本,后续可能会有4…

坦克400 Hi4-T预售价28.5万元起,越野新能源好理解

8月25日,在以“智享蓉城,驭见未来”为主题的成都国际车展上,坦克品牌越野新能源再启新程,首次以全Hi4-T新能源阵容亮相展台,释放坦克品牌加速布局越野新能源的强烈信号。 Hi4-T架构首款落地车型坦克500 Hi4-T上市至今斩…

【C++入门】string类常用方法(万字详解)

目录 1.STL简介1.1什么是STL1.2STL的版本1.3STL的六大组件1.4STL的缺陷 2.string类的使用2.1C语言中的字符串2.2标准库中的string类2.3string类的常用接口说明 (只讲解最常用的接口)2.3.1string类对象的常见构造2.3.2 string类对象的容量操作2.3.3string…

stable diffusion实践操作-大模型介绍

本文专门开一节写大模型相关的内容,在看之前,可以同步关注: stable diffusion实践操作 常用到的基础模型和插件(持续更新中) 链接:https://pan.baidu.com/s/1c9utQmWlGcRqLTr_kftTyA?pwd1111 提取码&…

go语言配置

1、Go语言的环境变量 与Java等编程语言一样,安装Go语言开发环境需要设置全局的操作系统环境变量(除非是用包管理工具直接安装) 主要的系统级别的环境变量有两个: (1)GOROOT:表示Go语言环境在计算机上的安…

学习网络编程No.5【TCP套接字通信】

引言: 北京时间:2023/8/25/15:52,昨天刚把耗时3天左右的文章更新,充分说明我们这几天并不是在摆烂中度过,而是在为了更文不懈奋斗,历时这么多天主要是因为该部分知识比较陌生,所以需要我们花费…

行业追踪,2023-09-01

自动复盘 2023-09-01 凡所有相,皆是虚妄。若见诸相非相,即见如来。 k 线图是最好的老师,每天持续发布板块的rps排名,追踪板块,板块来开仓,板块去清仓,丢弃自以为是的想法,板块去留让…

云原生架构:在云环境中构建弹性应用

随着云计算技术的快速发展,云原生架构已经成为现代软件开发的热门话题。作为一种在云环境中构建和运行应用程序的方法论,云原生架构强调弹性、可扩展性和灵活性,使开发者能够更好地应对复杂的业务需求。本文将深入探讨云原生架构的核心概念、…

Screaming Frog SEO Spider,为您的网站提供全方位的优化解决方案

Screaming Frog SEO Spider是一款适用于Mac的软件,它可以帮助用户分析网站的优化信息。该软件可以模拟蜘蛛爬行的方式,抓取网站的各种信息,并将这些信息整理成易于理解的报告。这些报告可以帮助用户评估网站的优化情况,发现链接的…

【Kali Linux】高级渗透测试实战篇

这里写目录标题 前言内容简介读者对象随书资源目录 前言 对于企业网络安全建设工作的质量保障,业界普遍遵循PDCA(计划(Plan)、实施(Do)、检查(Check)、处理(Act&#xff…

排序算法的稳定性

稳定性:对于一个数,经过多次排序,保留一个数之间的相对次序 在基础类型数据上,稳定性用处不大 在非基础类型上,可以做到对于相同元素来说,排完序相同元素之间的相对次序不变 归并排序在merge的过程中先拷贝…

TL6478(TI TMS320C6748 DPS)EVM开发板技术讲座 第二讲:USB转串口驱动安装

在开展我们的TL 6748 DSP开发版开发之前,需要先安装usb转串口驱动,才能使得我们的电脑上查询到该设备,使用该设备。底板上存在UART1、UART2,将评估板的 UART2 RS232 调试串口通过 RS232 交叉串口母母线、USB 转 RS232 公头串口线连接至 PC 机的 USB 接口。1. 驱动下载 USB…

制作广告宣传片需要注意什么

广告宣传片可以通过生动的图像、音乐和文字来展示产品或服务的独特卖点,吸引潜在客户的注意力。它可以突出产品或服务的特点,使其在竞争激烈的市场中脱颖而出。在制作广告宣传片时,有几个关键要点需要注意,深圳广告宣传片制作公司…

Java 复习笔记 - 基础篇

文章目录 Java 跨平台原理高级语言的编译运行方式 Java JRE和JDKJava 注释(一)什么是注释?(二)注释的分类(三)注释的使用细节 Java 关键字(一)什么是关键字?&…