建设厅的工程造价网站,淘宝客做网站推广,首页设计的公司官网,wordpress免费企业主题自适应一、前言
1、requests简介
requests是一个很实用的Python HTTP客户端库#xff0c;爬虫和测试服务器响应数据时经常会用到#xff0c;它是python语言的第三方的库#xff0c;专门用于发送HTTP请求#xff0c;使用起来比urllib更简洁也更强大。
2、requests的安装
pip i…一、前言
1、requests简介
requests是一个很实用的Python HTTP客户端库爬虫和测试服务器响应数据时经常会用到它是python语言的第三方的库专门用于发送HTTP请求使用起来比urllib更简洁也更强大。
2、requests的安装
pip install requests 3、利用cookie登录古诗文网
难点我们在进行登录时观察到与许多参数我们要对参数进行分析在分析的时候我们发现了三个变化参数分别是VIEWSTATE VIEWSTATEFENE CODE 。而且我们在对登录页面解析时并不能找到VIEWSTATE VIEWSTATEFENE而这样的参数一般就会放在被隐藏在页面源码之中我们需要去对页面源码解析并获取数据这也是现在网站喜欢用的一个反扒手段。而且古诗文网的登录页面采用动态验证码来登录我们考虑的时获取每次登录时产生的随机验证码图片手动输入验证码来进行登录。
import requests
url https://so.gushiwen.cn/user/login.aspx?fromhttp://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/115.0.0.0 Safari/537.36
# }
response requests.get(urlurl,headersheaders)
content response.text
#解析源码获取__VIEWSTATE __VIEWSTATEGENERATOR
from bs4 import BeautifulSoup
soupBeautifulSoup(content,lxml)
# #获取数据
viewstatesoup.select(#__VIEWSTATE)[0].attrs.get(value)
viewstategeneratorsoup.select(#__VIEWSTATEGENERATOR)[0].attrs.get(value)# #获取验证码图片
code soup.select(#imgCode)[0].attrs.get(src)
code_urlhttps://so.gushiwen.cncode
import urllib.request
urllib.request.urlretrieve(urlcode_url,filenamecode.jpg)
requests方法 session 通过session返回值使请求变为对象
session requests.session()
response_codesession.get(code_url)
# #注意此时使用二进制数据因为我们使用图片的下载
content_coderesponse_code.content
# #wb模式将二进制数据写入文件
with open(code.jpg,wb)as fp:fp.write(content_code)# #获取验证码图片以后下载到本地然后观察验证码观察之后控制台输入验证码将值给参数code 就可以登录
code_nameinput(请输入验证码)
# #点击登录
url_post https://so.gushiwen.cn/user/login.aspx?fromhttp%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_postsession.post(urlurl,headersheaders,datadata_post)
content_postresponse_post.text
with open(gushiwen.html,w,encodingutf-8)as fp:fp.write(content_post)以上代码大家只需要将自己的账号与密码输入进去就可以尝试登录了如果需要其他的网站大家也可以尝试。