秋名山老司机(BS4与正则的比拼)
因为嘉伟思杯里的一个脚本题目,16进制计算,python3正则还没学,所以没写出来。大佬跟我说也可以用BS4,从DOM上下手,直接爬下来直接一个eval就搞定了,eval可以像这样计算16进制,eval('0x2b+0x37')。BUGKU已经写了很多了,还几题没写,慢慢的续上。写过的就不发WP了,百度都有,就是像记录自己的学习历程。从原来的不懂,到现在的会。
呢么进入正题:),进入题目链接后,

import re
import requests
url='http://123.206.87.240:8002/qiumingshan/'
r=requests.session()
numbers=r.get(url)
last=re.search(r'(\d+[/+*-])+(\d+)',numbers.text).group() 或者用re.findall也可以实现想BS一样的功能#last=re.findall(r'<div>(\d.*)</div>',numbers.text)[0]
#data=eval(last.strip('=?;'))
data=eval(last)
post={'value':data}
accept=r.post(url,data=post)
print(accept.text)
至于为什么知道参数是VALUE,我也很疑惑写完脚本后,不知道POST参数是什么,随便找了下WP看了下,刷新多次后,就会出现。。。。(我醉了)

来了,老弟,女朋友GANK完,就开始撸代码了。其实就是用BS4在DOM上操作,爬取页面上需要的东西,然后转化成String,再eval下,因为菜的真实,各种百度转化格式。
import requests
from bs4 import BeautifulSoup
url='http://123.206.87.240:8002/qiumingshan/'
r=requests.session()
title=r.get(url)
html=title.text
beau=BeautifulSoup(html,'html.parser')
texts=beau.find_all('div')
a=texts[0].string
print(type(a),type(str(a)))
c=str(a).strip('=?;')
data=eval(c)
post={'value':data}
abc=r.post(url,data=post)
print(abc.text)
把bs4.element.Tag通过string方法转化为bs4.element.NavigableString,然后可以通过str()或者join方法来转化为string格式,再一个eval搞定。具体NavigableString是什么,留给大家百度了(其实自己也就是一知半解QAQ)
然后代码的最后,a,b,c这种命名格式不推荐,虽然写起来方便,但不容易记忆,如果是很大一串的代码,呢么你就GG了。所以养成一个代码命名的好习惯是很总要的噢(我只是偷懒了一下下)
BS4学习可以通过文档查阅
秋名山老司机(BS4与正则的比拼)的更多相关文章
- bugku秋名山老司机+写博客的第一天
bugku之秋名山老司机 题目连接:http://123.206.87.240:8002/qiumingshan/ 一点进去是这样的 请在两秒内计算这个式子...怎么可能算的出来 查看源码,无果.. ...
- javbus爬虫-老司机你值得拥有
# 起因 有个朋友叫我帮忙写个爬虫,爬取javbus5上面所有的详情页链接,也就是所有的https://www.javbus5.com/SRS-055这种链接, 我一看,嘿呀,这是司机的活儿啊,我绝对 ...
- C语言老司机学Python (五)
今天看的是标准库概览. 操作系统接口: 用os模块实现. 针对文件和目录管理,还有个shutil模块可以用. 例句: import os os.getcwd() # 返回当前的工作目录 os.chdi ...
- [BZOJ4200][Noi2015]小园丁与老司机
4200: [Noi2015]小园丁与老司机 Time Limit: 20 Sec Memory Limit: 512 MBSec Special JudgeSubmit: 106 Solved ...
- 老司机学新平台 - Xamarin开发之我的第一个MvvmCross跨平台插件:SimpleAudioPlayer
大家好,老司机学Xamarin系列又来啦!上一篇MvvmCross插件精选文末提到,Xamarin平台下,一直没找到一个可用的跨平台AudioPlayer插件.那就自力更生,让我们就自己来写一个吧! ...
- 老司机学新平台 - Xamarin Forms开发框架之MvvmCross插件精选
在前两篇老司机学Xamarin系列中,简单介绍了Xamarin开发环境的搭建以及Prism和MvvmCross这两个开发框架.不同的框架,往往不仅仅使用不同的架构风格,同时社区活跃度不同,各种功能模块 ...
- 老司机学新平台 - Xamarin开发环境及开发框架初探
随着被微软收购,最近一年间,Xamarin的火爆程度与日俱增.免费.更好的VS2015集成.更好的模拟器,甚至,在windows上运行和调试iOS平台程序,让我这样接触了十几年.NET平台的老司机,即 ...
- FJNU 1196 汪老司机(DP or 建图+最短路)
1196: 汪老司机 Time Limit: 1000 MS Memory Limit: 257792 KB 64-bit interger IO format: %lld ...
- 老司机带你走进Core Animation
为什么时隔这么久我又回来了呢? 回来圈粉. 开玩笑的,前段时间ipv6被拒啊,超级悲剧的,前后弄了好久,然后需求啊什么的又超多,所以写好的东西也没有时间整理.不过既然我现在回来了,那么这将是一个井喷的 ...
随机推荐
- 哈尔滨工业大学(威海)第九届ACM程序设计竞赛 Virtual Youtuber
链接 [https://ac.nowcoder.com/acm/contest/624/G] 题意 其实题意说的辣鸡死了,没有说明确. y is the subsequences that its s ...
- 微信中如何做到访问app的下载链接时直接跳到默认浏览器去执行下载
在我们使用微信营销的时候,很容易碰到H5链接在微信内无法打开或在微信内无法打开app下载页的情况.通常这种情况微信会给个提示 “已停止访问该网址” ,那么导致这个情况的因素有哪些呢,主要有以下四点 1 ...
- MySQL之日期时间类型
mysql(5.5)所支持的日期时间类型有:DATETIME. TIMESTAMP.DATE.TIME.YEAR. 几种类型比较如下: 日期时间类型 占用空间 日期格式 最小值 最大值 零值表示 D ...
- Virtual DOM 系列三:Diff算法
DOM操作是昂贵的,为了减少DOM操作,才有了Virtual DOM.而Virtual DOM的关键就是通过对比新旧vnode,找出差异部分来更新节点.对比的关键算法就是Diff算法. 历史由来: d ...
- 能ping通虚拟机中的Ubuntu,使用XShell连不上
1.在宿主机上telnet 虚拟机ip 22如果显示端口无法接通,说明你的/etc/init.d/sshd 是stop或者是异常的. 2.如果没有sshd服务,使用" sudo apt-g ...
- MyBatis-Plus
一.通用SQL 1.简介:(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发.提高效率而生. 2.定义Javabean中成员变量所使用的的类型: ...
- [ffmpeg] h.264解码所用的主要缓冲区介绍
在进行h264解码过程中,有两个最重要的结构体,分别为H264Picture.H264SliceContext. H264Picture H264Picture用于维护一帧图像以及与该图像相关的语法元 ...
- CSS中各种居中的问题
1.元素水平居中 1.1 在父元素上使用text-align: center; father { text-align: center; } 1.2 margin: 0 auto; 在上一个问题中,我 ...
- 洛谷 P1494 [国家集训队] 小Z的袜子
题目概述: 小Z把N只袜子从1到N编号,然后从编号L到R(L 尽管小Z并不在意两只袜子是不是完整的一双,甚至不在意两只袜子是否一左一右,他却很在意袜子的颜色,毕竟穿两只不同色的袜子会很尴尬. 你的任务 ...
- 简单记录一次getshell到进服务器的过程
通过st2命令执行上次木马进行getshell 查看whoami,发现权限是administrator,直接net user xxx xxx123.. /add,发现拒绝访问 通过命令tasklist ...