目录

一、学习资源

二、分析

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项目之古诗文网相关推荐

  1. python Scrapy项目 之 古诗文网案例呈现

    python Scrapy项目 之 古诗文网案例呈现 文章目录 需求 1. Scrapy项目创建 2. 全局配置 settings.py 3. 爬虫程序.py 4. 数据结构 items.py 5. ...

  2. python爬虫之古诗文网中验证码的识别并登录----第三方平台

    目标网站:古诗文网 目标网址:http://so.gushiwen.org/user/collect.aspx 任务要求: (1)通过selenium的方式模拟该网站的登录,并成功输入用户名和密码: ...

  3. Python真香之爬取古诗文网

    最近在学习Python相关,学习了基本的语法后想搞点事情试试,所以来爬取下古诗文网中的相关作者信息 准备资料: 爬取目标:爬取古诗文网的唐代作者的信息 目标分析: 一级页面是所有唐代作者的列表,点击名 ...

  4. Python使用网络抓包的方式,利用超级鹰平台识别验证码登录爬取古诗文网、上篇--识别验证码

    Python使用网络抓包的方式,利用超级鹰平台识别验证码登录,<爬取古诗文网>. 上篇–识别验证码 序言: 哈喽,各位小可爱们,我又来了,这次我新学习到的内容是python爬虫识别验证码. ...

  5. Python爬虫实战(3)古诗文网

    Python爬虫实战(3)古诗文网 网页分析 代码 注意事项 输出结果 利用BeautifulSoup和和requests库实现古诗文网的古诗抓取 运行平台: Windows Python版本: Py ...

  6. Python爬虫(一)——爬取古诗文网,初识什么是爬虫

    首先来说下什么是爬虫,按照百度百科的说法是:是一种按照一定规则,自动抓取万维网信息的程序或者脚本:首先它是程序,需要我们定义好规则,然后程序就会按照定义好的规则抓取网络上的信息,数据抓取下来了之后,需 ...

  7. python爬虫----DAY4-1-----验证码识别实战---识别古诗文网

    python爬虫----DAY4-1-----验证码识别实战 实战:识别古诗文网登录页面中的验证码 -https://so.gushiwen.cn/user/login.aspx 文章目录 pytho ...

  8. Python实战---使用正则表达式爬取古诗文网

    使用正则表达式爬取古诗文网 爬取目标 具体字段为: title 标题 dynasty 朝代 author 作者 content 内容 tag 标签 实现代码 ''' @Description: 使用正 ...

  9. 用python实现古诗文网个人主页爬取

    #coding=gbk #为了解决编码问题加入的coding=gbk from chaojiying import Chaojiying_Client import requests from lxm ...

最新文章

  1. 与AMD合并后,赛灵思与英特尔、英伟达在数据中心市场呈“三足鼎立”之势
  2. 闪存普及推动技术进步!2016年存储行业五大热门技术回顾
  3. (转载)Markdown基本语法
  4. HDFS EditsLog和FsImage日志机制
  5. ADO.NET Entity Framework 使用中的经验总结
  6. python内建函数有哪些_Python内建函数大全(一)
  7. 掌握rm命令删除文件
  8. IE各浏览器HACK
  9. 自然语言处理(NLP)与自然语言理解(NLU)的区别
  10. endnote X7 超级初学者教程
  11. vmoptions默认配置_idea VM options参数优化
  12. 为什么别人可以打开的网站,你却打不开?原因找到了 ,HTTP ERROR 404
  13. 20220408-CH9121串口转以太网模块学习
  14. BGA封装的优缺点解析
  15. 利用python将某列修改成另一列
  16. 百度AICA迎来毕业季,55位新晋“首席AI架构师”推进产业智能化
  17. zjs-my-dary-20220113
  18. oneDrive 无法连接
  19. 电销公司用什么外呼系统好?用pc版还是app版
  20. hexo博客fluid主题添加aplayer组件

热门文章

  1. php ajax xmlhttpreq 上传文件 get,使用Ajax XmlHttpRequest上传文件
  2. 数据结构树4-二叉搜索树2
  3. 连接真机开发安卓(Android)移动app MUI框架 反馈意见、忘记密码、登录、底部选项卡、联系我们、导航等页面代码可拿——混合式开发(六)
  4. C# Http请求接口数据的两种方式Get and Post
  5. 免费的编程中文书籍索引(2018第三版)
  6. TP3.2.x判断手机端访问并设置默认访问模块的方法 - ThinkPHP框架
  7. Contest Hunter 0103最短Hamilton路径 【状压dp】 By cellur925
  8. angluar.js 学习
  9. [转帖]mysql ERROR 1130 解决办法
  10. MAC 安装 Magento2 community edition 详细步骤