python爬虫—requests

news/2024/7/19 9:18:03 标签: python, 爬虫, 开发语言

一、安装

pip install requests

二、基本使用

1、基本使用

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

python">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区别

python">
# 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)不需要请求对象的定制

 

三、代理

python">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代码

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.niftyadmin.cn/n/4991089.html

相关文章

通义千问部署搭建

文章目录 一、部署11.1 打开通义千问-7B-预训练-模型库-选择资源1.2 使用Netbook2.1 运行2.2 复制脚本2.2.1 问题1 :ImportError: This modeling file requires the following packages that were not found in your environment: transformers_stream_generator. R…

Python Qt学习(七)Listview

源代码: # -*- coding: utf-8 -*-# Form implementation generated from reading ui file qt_listview.ui # # Created by: PyQt5 UI code generator 5.15.9 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not…

【Docker】用Dockerfile制作个人的镜像文件

作者简介: 辭七七,目前大一,正在学习C/C,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖&#x1f…

android开发google账号一键登录和注册

一、官网的使用说明 开始使用一键登录和注册 | Authentication | Google for Developers 二、先到API控制台注册应用添加web应用凭证,注意一定是web应用凭证,如果用android凭证使用时会报错“10: Developer console is not set up correctly”不知…

httplib 与 json.hpp 结合示例

httplib 与 json.hpp 结合示例 1、使用POST 接口,发送 登陆 请求 客户端发送 {nlohmann::json jsonOfCollectionInfo;jsonOfCollectionInfo["user_id"] "zhang";jsonOfCollectionInfo["password"] "123456";httplib::…

A. Channel

题目:样例: 输入 4 5 5 3 -- 5 2 3 - 5 4 2 - 5 0 7 -输出 YES NO MAYBE YES 题意: 给出 目的人数n看到通告的数量,初始人数m上线的数量,通知系统上线q条消息,‘-’表示有人下线,‘’表示有人上…

【Kali Linux高级渗透测试】深入剖析Kali Linux:高级渗透测试技术与实践

📕作者简介:热爱跑步的恒川,致力于C/C、Java、Python等多编程语言,热爱跑步,喜爱音乐的一位博主。 📗本文收录于恒川的日常汇报系列,大家有兴趣的可以看一看 📘相关专栏C语言初阶、C…

仿弹壳特工队,绝地反击活动使用电池翻格子小游戏(JAVA小游戏)

近来太无聊,玩了一款割草游戏,里面有个活动感觉挺好玩的,像扫雷一样,寻找线索(灯泡),在这里使用JAVA语言也简单实现下游戏。 先上效果图,鼠标点击对应的块,可以展开相连的方块,点击…