资讯专栏INFORMATION COLUMN

爬虫requests模块 入门到入狱 :基础知识+实战分析

yagami / 1245人阅读

??????
???Hello,大家好我叫是Dream呀,一个有趣的Python博主,小白一枚,多多关照???
???CSDN Python领域新星创作者,大二在读,欢迎大家找我合作学习
?入门须知:这片乐园从不缺乏天才,努力才是你的最终入场券!???
?最后,愿我们都能在看不到的地方闪闪发光,一起加油进步???
???“一万次悲伤,依然会有Dream,我一直在最温暖的地方等你”,唱的就是我!哈哈哈~???
???✨✨✨

前言:requests库其实和urllib库是差不多的,但是urllib库的话有点过时了,所以说一般都是用的request库,下面一起来学习一下吧

一、基本使用

1.使用文档

官方文档
http://cn.python‐requests.org/zh_CN/latest/

快速上手
http://cn.python‐requests.org/zh_CN/latest/user/quickstart.html

2.安装

pip install requests

安装成功后会有successfully的提示,已安装会有Requirement already satisfied的提示:

3.response的属性以及类型

1.类型

```htmlimport requestsurl = "https://www.baidu.com/"response = requests.get(url = url)# 一种类型 六个属性# Response类型print(type(response))
<class "requests.models.Response">

2.以字符串形式来返回网页的源码

# 以字符串形式来返回网页的源码print(response.text)

3.返回一个url地址

# 返回一个url地址print(response.url)
https://www.baidu.com/

4.返回的是二进制数据

# 返回的是二进制数据print(response.content)


5.返回响应的状态码

# 返回响应的状态码print(response.status_code)
200

6.返回的是响应头

# 返回的是响应头print(response.headers)

二、简单对比urllib和requests

1.urllib

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

2.requests

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

三、requests方法应用

1.requests的get请求

(1)请求百度界面

import requestsurl = "https://www.baidu.com/s"headers={    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36"}data = {    "wd": "北京"}# url 请求资源路径# params 参数# kwargs 字典response = requests.get(url=url, params=data, headers=headers)content = response.textprint(content)

(2)特点总结

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

2.requests的post请求

(1)请求百度翻译

# -*-coding:utf-8 -*-# @Author:到点了,心疼徐哥哥# 奥利给干!!!import requestsimport jsonurl = "https://fanyi.baidu.com/sug"headers={    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36"}data = {    "kw":"eye"}# url请求地址# data请求参数# kwargs 字典response = requests.post(url=url, data=data, headers=headers)content = response.textprint(content)obj = json.loads(content,encoding="utf-8")print(obj)

(2)特点总结

1.post请求不需要编解码
2.post请求的参数是data
3.不需要请求对象的定制

3.requests的cookie代理

(1)登录古诗文网

1.打开古诗文网:
古诗文网

2.登录界面:

# 登录界面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; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36"}

3.获取页面的源码

# 获取页面的源码:response = requests.get(url=url,headers=headers)content = response.text

4.解析页面源码,然后获取’__VIEWSTATE’和’__VIEWSTATEGENERATOR’

# 解析页面源码,然后获取"__VIEWSTATE"和"__VIEWSTATEGENERATOR"from bs4 import BeautifulSoupsoup = BeautifulSoup(content,"lxml")# 获取"__VIEWSTATE"viewstate = soup.select("#__VIEWSTATE")[0].attrs.get("value")# 获取"__VIEWSTATEGENERATOR"viestategener = soup.select("#__VIEWSTATEGENERATOR")[0].attrs.get("value")

5.获取验证码图片

# 获取验证码图片code = soup.select("#imgCode")[0].attrs.get("src")code_url ="	https://so.gushiwen.cn"+code

6.获取图片验证码后,保存到本地,然后观察验证码进行输入。

# 获取图片验证码后,保存到本地,然后观察验证码进行输入。# 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_name = input("请输入你的验证码:")

7.点击登录

url_post = "https://so.gushiwen.cn/user/login.aspx?from=http%3a%2f%2fso.gushiwen.cn%2fuser%2fcollect.aspx"data_post = {    "__VIEWSTATE":viewstate ,    "__VIEWSTATEGENERATOR":viestategener ,    "from": "http://so.gushiwen.cn/user/collect.aspx",    "email": "18300396393",    "pwd": "20020102XYPxyp",    "code": code_name,    "denglu":"登录",}response_post = session.post(url=url,headers=headers,data=data_post)content_post = response_post.textwith open("gushiwen.html","w",encoding="utf-8") as fp:    fp.write(content_post)

8.获取动态验证码

9.打开得到的网站:

进入:

成功撒花!

(2)难点

1.隐藏域
2.验证码

四、自动识别验证码

1.首先找到超级鹰网站:

超级鹰

可用账号及密码: 账号:action 密码:action

2.然后在开发文档中找到Python:


进入之后进行Python语言Demo下载。

3.修改代码

将下载好的Demo放入我们我们的工程文件中去,观察其代码:
1.将此处换成我们的用户名和代码

2.按照提示来替换我们的id:

3.生成我们自己的一个软件id:

4.最后在print后面加上(),就可以啦!
5.由于返回字典,就可以通过键值对对应关系,找到我们的验证码的值了:

4.源码分享:

#!/usr/bin/env python# coding:utf-8import requestsfrom hashlib import md5class Chaojiying_Client(object):    def __init__(self, username, password, soft_id):        self.username = username        password =  password.encode("utf8")        self.password = md5(password).hexdigest()        self.soft_id = soft_id        self.base_params = {            "user": self.username,            "pass2": self.password,            "softid": self.soft_id,        }        self.headers = {            "Connection": "Keep-Alive",            "User-Agent": "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)",        }    def PostPic(self, im, codetype):        """        im: 图片字节        codetype: 题目类型 参考 http://www.chaojiying.com/price.html        """        params = {            "codetype": codetype,        }        params.update(self.base_params)        files = {"userfile": ("ccc.jpg", im)}        r = requests.post("http://upload.chaojiying.net/Upload/Processing.php", data=params, files=files, headers=self.headers)        return r.json()    def ReportError(self, im_id):        """        im_id:报错题目的图片ID        """        params = {            "id": im_id,        }        params.update(self.base_params)        r = requests.post("http://upload.chaojiying.net/Upload/ReportError.php", data=params, headers=self.headers)        return r.json()if __name__ == "__main__":	chaojiying = Chaojiying_Client("action", "action", "925358")	#用户中心>>软件ID 生成一个替换 96001	im = open("a.jpg", "rb").read()													#本地图片文件路径 来替换 a.jpg 有时WIN系统须要//	print(chaojiying.PostPic(im, 1902).get("pic_str"))										#1902 验证码类型  官方网站>>价格体系 3.4+版 print 后要加()

❤️往期文章推荐❤️:

Python爬虫❤️ Urllib用法合集——⚡一键轻松入门爬虫⚡

爬虫中的恋爱学心理你get了吗?一杯星巴克温暖你的整个冬天——爬虫bs4解析从入门到入坑

❤️1024不孤单!❤️Xpath爬虫——你最忠实的伴侣:老规矩给我一分钟,万字教你入手Xpath!⚡

Python爬虫实战❤️ 从零开始分析页面,抓取数据——爬取豆瓣电影任意页数 看不懂你来找我!❤️

天青色等烟雨 爬虫在等你❤️post请求⚡cookie登录⚡handler处理器⚡

??? 好啦,这就是今天要分享给大家的全部内容了
❤️❤️❤️如果你喜欢的话,就不要吝惜你的一键三连了~

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/124786.html

相关文章

  • 首次公开,整理12年积累的博客收藏夹,零距离展示《收藏夹吃灰》系列博客

    摘要:时间永远都过得那么快,一晃从年注册,到现在已经过去了年那些被我藏在收藏夹吃灰的文章,已经太多了,是时候把他们整理一下了。那是因为收藏夹太乱,橡皮擦给设置私密了,不收拾不好看呀。 ...

    Harriet666 评论0 收藏0
  • Python爬虫入门教程 2-100 妹子图网站爬取

    摘要:为了写好爬虫,我们需要准备一个火狐浏览器,还需要准备抓包工具,抓包工具,我使用的是自带的,加上,这两款软件的安装和使用,建议你还是学习一下,后面我们应该会用到。 妹子图网站----前言 从今天开始就要撸起袖子,直接写Python爬虫了,学习语言最好的办法就是有目的的进行,所以,接下来我将用10+篇的博客,写爬图片这一件事情。希望可以做好。 为了写好爬虫,我们需要准备一个火狐浏览器,还需...

    zqhxuyuan 评论0 收藏0
  • Python爬虫入门教程 2-100 妹子图网站爬取

    摘要:为了写好爬虫,我们需要准备一个火狐浏览器,还需要准备抓包工具,抓包工具,我使用的是自带的,加上,这两款软件的安装和使用,建议你还是学习一下,后面我们应该会用到。 妹子图网站----前言 从今天开始就要撸起袖子,直接写Python爬虫了,学习语言最好的办法就是有目的的进行,所以,接下来我将用10+篇的博客,写爬图片这一件事情。希望可以做好。 为了写好爬虫,我们需要准备一个火狐浏览器,还需...

    stackfing 评论0 收藏0
  • Python爬虫学习路线

    摘要:以下这些项目,你拿来学习学习练练手。当你每个步骤都能做到很优秀的时候,你应该考虑如何组合这四个步骤,使你的爬虫达到效率最高,也就是所谓的爬虫策略问题,爬虫策略学习不是一朝一夕的事情,建议多看看一些比较优秀的爬虫的设计方案,比如说。 (一)如何学习Python 学习Python大致可以分为以下几个阶段: 1.刚上手的时候肯定是先过一遍Python最基本的知识,比如说:变量、数据结构、语法...

    liaoyg8023 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<