文章目录

  • shell解析html
    • 安装方法
    • 使用方法
    • xpath地址获取方法
    • 源码及编译
      • 源码
      • 编译
    • 相关问题

发布于:2022-01-17 22:02:39

shell解析html

没有找到shell有这个功能,百度shell解析xpath所说不知都是什么,命令没找到包也没装上,很怀念Python这方面的优异,索性自己封装了一层.

采用Python语言,写好后打包制作而成,源码及打包命令见文章尾部,之所以打包一下因为这样可以不依赖Python环境只需要在Linux系统主机即可执行(基于centos 7系统测试),如果主机有Python环境和相关依赖直接执行代码文件也可.

如有疑问或问题欢迎大佬留言.

下载地址(百度网盘):
链接: https://pan.baidu.com/s/1eboXIJD-5JR30BRRsPTNjQ?pwd=9snv 提取码: 9snv 复制这段内容后打开百度网盘手机App,操作更方便哦
蓝奏云网盘
https://wwi.lanzouw.com/i7QpFywyjed

安装方法

[root@emr-header-01 tmp]# ls
xpath.tar.gz
[root@emr-header-01 tmp]# tar xf xpath.tar.gz
[root@emr-header-01 tmp]# ls
xpath  xpath.tar.gz
[root@emr-header-01 tmp]# chown 755 xpath
[root@emr-header-01 tmp]# mv xpath /usr/bin/
[root@emr-header-01 tmp]#
  1. 下载上传
  2. 解压,执行tar xf xpath.tar.gz
  3. 授权,如果没有执行权限的话.chown 755 xpath
  4. 移动到bin目录下 mv xpath /usr/bin/.

使用方法

首先准备一个页面,下载保存到本地.
示例网址: https://so.gushiwen.cn/shiwenv_1fecfb7d6ac8.aspx
网站页面内容:

# 开始获取 将内容保存为文件
[root@emr-header-02 ~]# curl -o caiwei https://so.gushiwen.cn/shiwenv_1fecfb7d6ac8.aspx% Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed
100 34827    0 34827    0     0   423k      0 --:--:-- --:--:-- --:--:--  419k
[root@emr-header-02 ~]# ls
anaconda-ks.cfg  caiwei  tmp  xpath.tar.gz  zookeeper.out
[root@emr-header-02 ~]#

解析内容使用示例

# 获取文本内容
[root@emr-header-02 ~]# xpath --file=caiwei --path="/html/body/div[2]/div[1]/div[2]/div[1]/div[2]/p/text()"
采薇采薇,薇亦作止。曰归曰归,岁亦莫止。 靡室靡家,猃狁之故。不遑启居,猃狁之故。
采薇采薇,薇亦柔止。曰归曰归,心亦忧止。 忧心烈烈,载饥载渴。我戍未定,靡使归聘。
采薇采薇,薇亦刚止。曰归曰归,岁亦阳止。 王事靡盬,不遑启处。忧心孔疚,我行不来!
彼尔维何?维常之华。彼路斯何?君子之车。 戎车既驾,四牡业业。岂敢定居?一月三捷。
驾彼四牡,四牡骙骙。君子所依,小人所腓。 四牡翼翼,象弭鱼服。岂不日戒?猃狁孔棘!
昔我往矣,杨柳依依。今我来思,雨雪霏霏。 行道迟迟,载渴载饥。我心伤悲,莫知我哀!
# 取其中的某个元素 如src='xxx'
[root@emr-header-02 ~]# xpath --file=caiwei --path="/html/body/div[2]/div[1]/div[2]/div[2]/div[1]/img/@src"
https://song.gushiwen.cn/siteimg/shou-cang.png
# 当出现异常时会返回不同的状态码,如果成功则返回0,可以以此判断执行是否成功,示例
[root@emr-header-02 ~]# xpath --file=caiwei.html --path="//*[@id="sonsyuanwen"]/div[1]/h1/text()"
没有找到文件!
[root@emr-header-02 ~]# echo $?
2
[root@emr-header-02 ~]# xpath --file=caiwei --path="//*[@id="sonsyuanwen"]/div[1]/h1/text()a"
xpath解析异常!
[root@emr-header-02 ~]# echo $?
3
# 取文章名称,获取结果成功返回 0
[root@emr-header-02 ~]# xpath --file=caiwei --path="/html/body/div[2]/div[1]/div[2]/div[1]/h1/text()"
采薇
[root@emr-header-02 ~]# echo $?
0
[root@emr-header-02 ~]# xpath --help
Usage: xpath [OPTIONS]Options:--file TEXT  read code file name.--path TEXT  xpath path.--help       Show this message and exit.
[root@emr-header-02 ~]#

xpath地址获取方法

以Google浏览器为例

更多相关操作参考:
https://www.w3school.com.cn/xpath/index.asp
https://www.runoob.com/xpath/xpath-syntax.html
https://baike.baidu.com/item/XPath/5574064?fr=aladdin

源码及编译

源码
from lxml import etree
import click
import sys# 获取参数
@click.command()
@click.option('--file', help='read code file name.')
@click.option("--path",help="xpath path.")def parsing(file,path):# 判断是否传入足够的参数if file == None or path == None:print("请指定--file和--path,或添加参数--help查看帮助.")#return Falsesys.exit(1)try:# 打开文件 读取数据with open(file,mode="r",encoding='utf8') as r:htmlData = r.read()except FileNotFoundError:print("没有找到文件!")sys.exit(2)# 装载HTML代码数据xpath = etree.HTML(htmlData)try:# 解析地址 获取对应返回值data = xpath.xpath(path)except:print("xpath解析异常!")sys.exit(3)if data == []:print("没有找到任何数据,请检查地址是否正确")else:# 循环列表 打印内容for i in data:print(i)
if __name__ == '__main__':# parsing("jianjia.html",'/html/body/div[2]/div[1]/div[2]/div[1]/div[2]/p/text()')parsing()

python所写,主要使用了lxml包的etree.

编译

首先有一台装好Python3的主机,配置好pip.
安装打包命令

pip install pyinstaller

在代码文件放置位置执行

# main.py 为文件名称
pyinstaller -F main.py
# 执行完毕后在当前目录下有个dist目录,里面为二进制可执行包.

相关问题

  1. 从浏览器复制的xpath地址解析不到任何东西
    可参考:Python lxml模块xpath解析不到内容
    解决方案:Linux可以先使用curl将页面保存到本地,然后用浏览器打开保存的文件,F12控制台中重新复制xpath地址.

shell解析HTML相关推荐

  1. sqlmap os shell解析

    0x00 Background 最近遇到测试环境,最后利用sqlmap的--os-shell参数取得shell.一直以来,对这个参数的工作原理不是十分的清晰.大致的思想应该是将脚本插入到数据库中,然后 ...

  2. shell 解析 json

    如果 想利用 shell 从 json 数据 中 解析出某个字段, 可以 利用 正则匹配, 比如 想 解析出 "spanId":"8461203268866670975& ...

  3. bash/shell 解析命令行参数工具:getopts/getopt

    转载自:https://my.oschina.net/leejun2005/blog/202376 bash 脚本中,简单点的参数选项,我们可以直接用位置参数 $1 $2 这样来获取处理了,例如下面这 ...

  4. linux shell 解析文本文件,linux Shell 全解析

    Shell 函数Shell 字符串 单引号 单引号字符串的限制: 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的: 单引号字串中不能出现单引号(对单引号使用转义符后也不行). 双引号 双 ...

  5. linux shell解析1

    简介 我们常常提到的Shell其实是比较狭隘的定义,一般来说,在linux里,所谓的shell,就是指BASH这个文字模式的shell.但是广义的Shell也可以是KDE之类的图形界面控制软件,因为它 ...

  6. Shell解析curl返回的json数据

    主要介绍两种方式,第一种是使用jq(需要单独安装),第二种是使用python(建议). 一.使用jq 1.安装JQ 方式1:下载二进制文件 wget -O jq https://github.com/ ...

  7. shell解析html文件,[Shell] Shell 生成 HTML脚本,可显示表格

    Shell 生成 HTML脚本 生成的格式不好看,以后要多改进. [mon@oracle6 source]$ more gen_html #!/bin/bash datetime=`date +&qu ...

  8. shell解析json之jq工具

    工具下载地址及各版本的安装方式,我常用的是把工具包下载下来直接用,不安装: https://stedolan.github.io/jq/manual/#example1 test.json {     ...

  9. shell解析xml文件

    1.test.xml <?xml version="1.0" encoding="UTF-8"?> <license><pos&g ...

  10. c语言shell解析配置文件,.vimrc 配置文件( 带注释)

    "============================================================================== " => Ge ...

最新文章

  1. 【力扣网练习题】实现 strStr()
  2. 一个简单的slider滑块组件
  3. vue前端表格插件_Grid.js - 跨框架的前端表格插件
  4. salt的远程部署java-1.6.0-openjdk
  5. 安装VS2008新挫折
  6. .NetCore中三种注入方式的思考
  7. 常用牛人主页链接(计算机视觉、模式识别、机器学习相关方向,陆续更新。。。。)【转】...
  8. idea 关于2020maven home directory的路径
  9. webpack vs gulp 一张图说明
  10. Kettle 添加备注
  11. javascript 构造函数方式定义对象 (转载)
  12. 05、汇编语言和汇编软件
  13. 【复合五点高斯-勒让德公式】
  14. progress GAN
  15. 使用gradle开启multiDex时,如何配置MainDex
  16. github Topic 功能 | github 常用条件查询
  17. 微信录音功能在哪里?图文教学,轻松学会微信隐藏技能
  18. UVa 10101 - Bangla Numbers
  19. Flink流批一体化处理框架
  20. 怎么查看mysql密码_怎么查看mysql密码

热门文章

  1. iOS Mac安装ipa文件的几种方法
  2. 使用ps工具进行图片分析
  3. ONLYOFFICE Docs如何与NEXTCLOUD 24连接集成
  4. matlab中实心圆点,matlab曲线圆圈实心
  5. 前端优化之二 图片优化——质量与性能的博弈
  6. 面试乐融集团Python开发工程师助理有感
  7. 用计算机做电子贺卡送祝福,春节祝福电子贺卡模板制作
  8. 英语四六级考试技巧/英语四六级真题
  9. 为什么还有6亿中国人仍不放弃QQ?
  10. ImageBox显示方式设置、打开图片文件