秋名山老司机(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被拒啊,超级悲剧的,前后弄了好久,然后需求啊什么的又超多,所以写好的东西也没有时间整理.不过既然我现在回来了,那么这将是一个井喷的 ...
随机推荐
- iOS App上架流程(2016详细版)来源DeveloperLY
一.前言: 作为一名iOSer,把开发出来的App上传到App Store是必要的.下面就来详细讲解一下具体流程步骤. 二.准备: 一个已付费的开发者账号(账号类型分为个人(Individual).公 ...
- PHP 高级工程面试题汇总
PHP高级工程面试题汇总(2018.05) 1.给你四个坐标点,判断它们能不能组成一个矩形,如判断([0,0],[0,1],[1,1],[1,0])能组成一个矩形. 勾股定理,矩形是对角线相等的四边形 ...
- CMDB(Configuration Management Database)资产管理系统和 运维自动化
一.传统运维方式和自动化运维的区别 二.CMDB的介绍 三.CMDB的四种方式 四.项目的目录架构介绍以及配置文件的升级编写 五.比较low的项目架构书写 六.可插拔式收集资产 七.对收集的服务器信息 ...
- TCP/IP协议、UDP协议、 Http协议
开放式系统互联通信参考模型(Open System Interconnection Reference Model,缩写为 OSI),简称为OSI模型(OSI model),一种概念模型,由国际标准化 ...
- mysql8.0 Server 在Windows平台中的安装、初始化和远程访问设置
mysql8.0 server安装 1.下载mysql 8.0 可以到mysql官网下载 https://dev.mysql.com/downloads/mysql 或者如下地址 mysql-8.0. ...
- vue组件之间的通信
1.父组件给子组件传递数据 <body> <div id="app"> 父组件:{{total}} <br> <son-component ...
- Shodan的http.favicon.hash语法详解与使用技巧
在Shodan搜索中有一个关于网站icon图标的搜索语法,http.favicon.hash,我们可以使用这个语法来搜索出使用了同一icon图标的网站,不知道怎么用的朋友请参考我上一篇文章. 通过上一 ...
- odoo 权限问题
odoo 权限问题 权限组问题 权限组是为了将人员按组划分同一分配权限.权限组的建立是基于每个应用来实现的 建立一个应用的分组(可省略,主要用于创建用户时有选择项) 建立一条record记录model ...
- 2019年11个javascript机器学习库
Credits: aijs.rocks 虽然python或r编程语言有一个相对容易的学习曲线,但是Web开发人员更喜欢在他们舒适的javascript区域内做事情.目前来看,node.js已经开始向每 ...
- 题解:YNOI/GZOI2019 与或和
题目大意: 1. 求所有的子矩阵的and之和2. 求所有子矩阵的or之和 由于是位运算,那么久直接拆位,于是就变成了求全0子矩阵的个数和全1子矩阵的个数那么题目就变成了简单的单调栈问题 #includ ...