高端网站建设设计公司哪家好,百度如何搜索关键词,网络营销的方式和手段,用vs做购物网站目录 简介 基本使用编辑
编辑
安装 一个类型和六个属性
请求类型
GET
代码示例
POST
代码示例
代理
古诗文网绕过验证码登录
总结 简介 Python的Requests库是一个用于发送HTTP请求的常用库。它提供了简单且人性化的API#xff0c;使得发送HTTP请求变得非常容易。…目录 简介 基本使用编辑
编辑
安装 一个类型和六个属性
请求类型
GET
代码示例
POST
代码示例
代理
古诗文网绕过验证码登录
总结 简介 Python的Requests库是一个用于发送HTTP请求的常用库。它提供了简单且人性化的API使得发送HTTP请求变得非常容易。通过使用Requests库我们可以发送GET、POST、PUT、DELETE等类型的请求并且可以添加请求头、查询参数、请求体等。
以下是一个简单的使用Requests库发送GET请求的例子
import requestsresponse requests.get(https://www.example.com)
print(response.status_code) # 打印响应状态码
print(response.text) # 打印响应内容上述代码中我们首先导入了Requests库然后使用get()方法发送了一个GET请求并将返回的Response对象赋值给变量response。我们可以通过status_code属性获取响应的状态码通过text属性获取响应的内容。
另外我们还可以添加请求头、查询参数、请求体等。下面是一个发送POST请求的例子
import requestsheaders {User-Agent: Mozilla/5.0}
data {username: admin, password: 123456}
response requests.post(https://www.example.com/login, headersheaders, datadata)
print(response.status_code)
print(response.text)上述代码中我们首先定义了请求头headers和请求体data然后使用post()方法发送了一个POST请求并将headers和data作为参数传递给post()方法。 总之通过使用Requests库我们可以轻松地进行HTTP请求并且可以方便地获取响应的状态码、内容等。这使得编写爬虫程序变得更加简单和高效。 基本使用 安装
使用下面的路径直接在清华源安装即可 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ requests 一个类型和六个属性 Requests库提供了一些常用的属性包括
status_code响应的状态码如200表示请求成功404表示资源未找到等。text响应的内容以字符串形式返回。content响应的内容以二进制形式返回。headers响应的头部信息以字典形式返回。url响应的URL地址。cookies响应的Cookies以字典形式返回。 可以通过调用这些属性来获取请求的结果和相关信息。例如可以使用response.status_code来获取响应的状态码使用response.text来获取响应的内容。
代码示例
import requestsurl http://www.baidu.comresponse requests.get(urlurl)# 一个类型和六个属性
# 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) 请求类型 Requests库中最常用的请求类型是GET和POST。
GET GET请求用于从指定的资源获取数据一般用于获取数据或页面内容不对服务器上的数据进行修改。GET请求的示例代码如下
import requestsresponse requests.get(https://www.example.com)代码示例
# urllib
# 1一个类型六个方法
# 2get请求
# 3post请求 百度翻译
# 4ajax的get请求
# 5ajax的post请求
# 6cookie登录 微博
# 7代理# requests
# 1一个类型六个属性
# 2get请求
# 3post请求
# 4代理
# 5cookie 验证码import requestsurl https://www.baidu.com/sheaders {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36
}data {wd: 北京
}
# url 请求资源路径
# params 参数
# kwargs 字典
response requests.get(urlurl, paramsdata, headersheaders)content response.text
print(content)# 1.参数使用params传递
# 2.无需urlencode编码
# 3.无需请求对象的定制
# 4.url路径中的想要就要POST POST请求用于向服务器提交数据一般用于提交表单或发送一些需要保密的数据。POST请求的示例代码如下
import requestsdata {username: admin, password: 123456}
response requests.post(https://www.example.com/login, datadata)代码示例
import requests
import jsonurl https://fanyi.baidu.com/sugheaders {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36
}data {kw: eye
}# url请求地址
# data请求参数
# kwargs字典
response requests.post(urlurl, datadata, headersheaders)content response.textobj json.loads(content, encodingutf-8)
print(obj)1post请求不需要编解码
2请求参数是data
3不需要请求对象的定制 代理
直接上代码示例
import requests
import jsonurl http://www.baidu.com/s?headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36
}data {wd: ip
}proxy {http: 116.208.199.73:23807
}response requests.get(urlurl, paramsdata, headersheaders, proxiesproxy)content response.textwith open(daili3.html, w, encodingutf-8) as fp:fp.write(content) 古诗文网绕过验证码登录
难点 1隐藏域问题 2验证码
# 通过登录 进入主页面需要绕过验证码# 通过登录接口发现登录时需要如下的参数
# __VIEWSTATE: fLLDQqS2n94TjNwP1zhJQBwhXiqyzi8V0pbqfZAfsxGqiNCSUtTNoXqWYeXANRB4Z7nNpdoIE9Xxtw0TBlpzT3yu2edZ2vkaK8jQC8jOEupsk2mqafq36q2p5jzGp9Uuh8tG/M1GKJNl2miZdLYe5ZQ3k
# __VIEWSTATEGENERATOR: C93BE1AE
# from: http://so.gushiwen.cn/user/collect.aspx
# email: 你自己的账号
# pwd: 你自己的密码
# code: 验证码
# denglu: 登录# 观察到__VIEWSTATE和__VIEWSTATEGENERATOR和code是变量# 难点1__VIEWSTATE和__VIEWSTATEGENERATOR 一般来说看不见的数据都在页面的源码之中
# 发现这两个数据在页面的源码之中所以我们需要获取页面源码然后解析
# 2 验证码import requests
from bs4 import BeautifulSoup
import urllib.request# 登录页面的url
url https://so.gushiwen.cn/user/login.aspx?fromhttp://so.gushiwen.cn/user/collect.aspxheaders {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36
}# 获取页面源码
response requests.get(urlurl, headersheaders)content response.text# 解析页面源码获取__VIEWSTATE和__VIEWSTATEGENERATOR
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)
codeUrl https://so.gushiwen.cn code# 获取了验证码的图片之后下载到本地然后观察验证码
# 然后在控制台来输入这个验证码就可以将这个值给code的参数了
# 有坑
# 这里下载的时候是一个请求下面要是再访问又是另一个请求验证码不一样
# urllib.request.urlretrieve(codeUrl, filenamecode.jpg)# request中有一个方法叫做session
# 可以通过session的返回值就能使请求变成一个对象
session requests.session()
# 验证码的url
response_code session.get(codeUrl)
# 注意现在不可以使用text要使用二进制
# 因为我们要使用图片下载
content_code response_code.content# wb将二进制写入到文件
with open(code.jpg, wb) as fp:fp.write(content_code)code_name input(请输入你的验证码)# 登录
url_post https://so.gushiwen.cn/user/login.aspx?fromhttp%3a%2f%2fso.gushiwen.cn%2fuser%2fcollect.aspxdata_post {__VIEWSTATE: VIEWSTATE,__VIEWSTATEGENERATOR: VIEWSTATEGENERATOR,from: http://so.gushiwen.cn/user/collect.aspx,email: 你自己的账号,pwd: 你自己的密码,code: code_name,denglu: 登录
}
# 使用session前后的访问就是同一个请求了
response_post session.post(urlurl_post, headersheaders, datadata_post)content_post response_post.textwith open(gsw.html, w, encodingutf-8) as fp:fp.write(content_post)然后打开html文件就登录成功了 当然了你也可以通过一些机器学习的方法来完成这么个获取验证码的操作或者利用一些平台啊例如什么超级鹰之类的使用他们的API来识别图片中的验证码这样就不需要自己识别了 总结
我以后总结
再见
ヾ(▽)Bye~Bye~