python项目之古诗文网
目录
一、学习资源
二、分析
1、先找登录口,也就是什么情况下允许登录。
2、打开网页源码找参数
3、获取图片验证码
4、登录 (有坑)
5、成功登录
三、项目源码
一、学习资源
尚硅谷Python爬虫教程小白零基础速通(含python基础+爬虫案例)_哔哩哔哩_bilibili
二、分析
1、先找登录口,也就是什么情况下允许登录。
首先打开古诗文网站的官网,先检查网页(F12或者右键点击检查)然后登录,此时输入错误的密码(切记),不是要真正的登录进去,而是为了找登陆口。通过找登陆接口(login)发现,登录的时候需要的参数有很多。#观察到 __VIEWSTATE, __VIEWSTATEGENERATOR ,code 三个是一个可以变化的量。
2、打开网页源码找参数
观察到这两个数据在页面的源码中 所以我们需要获取页面的源码 然后进行解析就可以获取了
3、获取图片验证码
4、登录 (有坑)
此时登录所需要的数据全部获取到了,接下来就是登录了
此时登录时发现验证码是错误的,因为第一次请求下载图片和下一次返回的信息的验证码不是一个了,相当于动态的验证码已经换了一个了,但是下载的是前一个。
5、成功登录
此时有个小问题,当程序运行的时候,左边的图片加载没那么快,稍微等会就可以了或者去到本地文件中去看
三、项目源码
# coding=utf-8
#通过登录 然后进入到主页面#(1)先找登录接口,也就是什么情况下才允许登录
#(2)通过找登录接口(login)发现,登录的时候需要的参数很多
# __VIEWSTATE: eVgBnMThU95H2Pnl+vX1f9AtwKsdvG99QKbMzfVZkHrYs5+4t+83zenZVqGsl6OIio5aS2fojk1glAHlUuvNmBw0hw3MnKMSWrQV7jGNj0MJo6Cam0SUg+TW454=
# __VIEWSTATEGENERATOR: C93BE1AE
# from: http://so.gushiwen.cn/user/collect.aspx
# email: 595165358@qq.com #用户名
# pwd: action #密码
# code: B3FP #验证码
# denglu: 登录#观察到 __VIEWSTATE __VIEWSTATEGENERATOR code 三个是一个可以变化的量#难点:(1)__VIEWSTATE __VIEWSTATEGENERATOR 一般情况下看不到的数据都是在页面的源码中(隐藏域)
# 观察到这两个数据在页面的源码中 所以我们需要获取页面的源码 然后进行解析就可以获取了
# (2)验证码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 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"
}
#获取页面的源码
response = requests.get(url=url,headers=headers)
content = response.text
#输出内容看有没有需要的数据,判断有没有反爬
# print(content)
#解析页面源码,获取__VIEWSTATE __VIEWSTATEGENERATOR
from bs4 import BeautifulSoup
soup = BeautifulSoup(content,'lxml')
#获取__VIEWSTATE
viewsdate = soup.select('#__VIEWSTATE')[0].attrs.get('value')#返回的是个列表
#获取__VIEWSTATEGENERATOR
viewsdategenerator = 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('code1.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': viewsdate,'__VIEWSTATEGENERATOR': viewsdategenerator,'from': 'http://so.gushiwen.cn/user/collect.aspx','email': '17671886917' , #用户名'pwd': '123456789', #密码'code': code_name , #验证码'denglu': '登录'
}response_post = session.post(url=url,headers=headers,data = data_post)
content_post = response_post.text
with open('gushiwen.html','w',encoding='utf-8') as fp:fp.write(content_post)#难点
#(1)隐藏域
#(2)验证码
python项目之古诗文网相关推荐
- python Scrapy项目 之 古诗文网案例呈现
python Scrapy项目 之 古诗文网案例呈现 文章目录 需求 1. Scrapy项目创建 2. 全局配置 settings.py 3. 爬虫程序.py 4. 数据结构 items.py 5. ...
- python爬虫之古诗文网中验证码的识别并登录----第三方平台
目标网站:古诗文网 目标网址:http://so.gushiwen.org/user/collect.aspx 任务要求: (1)通过selenium的方式模拟该网站的登录,并成功输入用户名和密码: ...
- Python真香之爬取古诗文网
最近在学习Python相关,学习了基本的语法后想搞点事情试试,所以来爬取下古诗文网中的相关作者信息 准备资料: 爬取目标:爬取古诗文网的唐代作者的信息 目标分析: 一级页面是所有唐代作者的列表,点击名 ...
- Python使用网络抓包的方式,利用超级鹰平台识别验证码登录爬取古诗文网、上篇--识别验证码
Python使用网络抓包的方式,利用超级鹰平台识别验证码登录,<爬取古诗文网>. 上篇–识别验证码 序言: 哈喽,各位小可爱们,我又来了,这次我新学习到的内容是python爬虫识别验证码. ...
- Python爬虫实战(3)古诗文网
Python爬虫实战(3)古诗文网 网页分析 代码 注意事项 输出结果 利用BeautifulSoup和和requests库实现古诗文网的古诗抓取 运行平台: Windows Python版本: Py ...
- Python爬虫(一)——爬取古诗文网,初识什么是爬虫
首先来说下什么是爬虫,按照百度百科的说法是:是一种按照一定规则,自动抓取万维网信息的程序或者脚本:首先它是程序,需要我们定义好规则,然后程序就会按照定义好的规则抓取网络上的信息,数据抓取下来了之后,需 ...
- python爬虫----DAY4-1-----验证码识别实战---识别古诗文网
python爬虫----DAY4-1-----验证码识别实战 实战:识别古诗文网登录页面中的验证码 -https://so.gushiwen.cn/user/login.aspx 文章目录 pytho ...
- Python实战---使用正则表达式爬取古诗文网
使用正则表达式爬取古诗文网 爬取目标 具体字段为: title 标题 dynasty 朝代 author 作者 content 内容 tag 标签 实现代码 ''' @Description: 使用正 ...
- 用python实现古诗文网个人主页爬取
#coding=gbk #为了解决编码问题加入的coding=gbk from chaojiying import Chaojiying_Client import requests from lxm ...
最新文章
- 与AMD合并后,赛灵思与英特尔、英伟达在数据中心市场呈“三足鼎立”之势
- 闪存普及推动技术进步!2016年存储行业五大热门技术回顾
- (转载)Markdown基本语法
- HDFS EditsLog和FsImage日志机制
- ADO.NET Entity Framework 使用中的经验总结
- python内建函数有哪些_Python内建函数大全(一)
- 掌握rm命令删除文件
- IE各浏览器HACK
- 自然语言处理(NLP)与自然语言理解(NLU)的区别
- endnote X7 超级初学者教程
- vmoptions默认配置_idea VM options参数优化
- 为什么别人可以打开的网站,你却打不开?原因找到了 ,HTTP ERROR 404
- 20220408-CH9121串口转以太网模块学习
- BGA封装的优缺点解析
- 利用python将某列修改成另一列
- 百度AICA迎来毕业季,55位新晋“首席AI架构师”推进产业智能化
- zjs-my-dary-20220113
- oneDrive 无法连接
- 电销公司用什么外呼系统好?用pc版还是app版
- hexo博客fluid主题添加aplayer组件
热门文章
- php ajax xmlhttpreq 上传文件 get,使用Ajax XmlHttpRequest上传文件
- 数据结构树4-二叉搜索树2
- 连接真机开发安卓(Android)移动app MUI框架 反馈意见、忘记密码、登录、底部选项卡、联系我们、导航等页面代码可拿——混合式开发(六)
- C# Http请求接口数据的两种方式Get and Post
- 免费的编程中文书籍索引(2018第三版)
- TP3.2.x判断手机端访问并设置默认访问模块的方法 - ThinkPHP框架
- Contest Hunter 0103最短Hamilton路径 【状压dp】 By cellur925
- angluar.js 学习
- [转帖]mysql ERROR 1130 解决办法
- MAC 安装 Magento2 community edition 详细步骤