整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

如何使用htmlq提取html文件内容

如何使用htmlq提取html文件内容

tmlq能够对 HTML 数据进行 sed 或 grep 操作。我们可以使用 htmlq 搜索、切片和过滤 HTML 数据。让我们看看如何在 Linux 或 Unix 上安装和使用这个方便的工具并处理 HTML 数据。

什么是htmlq?

htmlq类似于 jq,但用于 HTML。使用 CSS 选择器从 HTML 文件中提取部分内容。在 CSS 中,选择器用于定位我们想要设置样式的网页上的 HTML 元素。例如,我们可以使用此工具轻松提取图像或其他 URL。

安装htmlq

首先需要在系统中安装cargo然后使用cargo来安装htmlq:

[root@localhost ~]# yum -y install cargo
[root@localhost ~]# cargo install htmlq

设置可执行的路径

确保将 $HOME/.cargo/bin 添加到 PATH 变量中,以便能够使用 export 命令运行已安装的二进制文件:

[root@localhost ~]# echo 'export PATH="$PATH:$HOME/.cargo/bin"' >> ~/.bash_profile 
[root@localhost ~]# . ~/.bash_profile 

如何使用 htmlq 从 HTML 文件中提取内容?

下面是使用curl和htmlq的用法:

curl -s url | htmlq '#css-selector'
curl -s url2 | htmlq '.css-selector'
curl -s https://www.linuxprobe.com | htmlq --pretty '#content' | more

让我们找到页面中的所有链接。例如:

[root@localhost ~]# curl -s https://www.linuxprobe.com | htmlq --attribute href a


人性化显示HTML:

[root@localhost ~]# curl --silent https://mgdm.net | htmlq --pretty '#posts'

帮助手册

使用下面命令查看帮助页面:

[root@localhost ~]# htmlq --help
htmlq 0.3.0
Michael Maclean <michael@mgdm.net>
Runs CSS selectors on HTML

USAGE:
    htmlq [FLAGS] [OPTIONS] [selector]...

FLAGS:
    -B, --detect-base          Try to detect the base URL from the <base> tag in the document. If not found, default to
                               the value of --base, if supplied
    -h, --help                 Prints help information
    -w, --ignore-whitespace    When printing text nodes, ignore those that consist entirely of whitespace
    -p, --pretty               Pretty-print the serialised output
    -t, --text                 Output only the contents of text nodes inside selected elements
    -V, --version              Prints version information

OPTIONS:
    -a, --attribute <attribute>    Only return this attribute (if present) from selected elements
    -b, --base <base>              Use this URL as the base for links
    -f, --filename <FILE>          The input file. Defaults to stdin
    -o, --output <FILE>            The output file. Defaults to stdout

ARGS:
    <selector>...    The CSS expression to select [default: html]

总结

htmlq能够对 HTML 数据进行 sed 或 grep 操作。我们可以使用 htmlq 搜索、切片和过滤 HTML 数据。

寻找热爱表达的你#


"一键将网页截图制作成HTML网页"是指一种技术,它允许用户通过简单的操作,将网页的截图转换成HTML代码的网页。这通常涉及到自动布局、样式提取和代码生成。以下是实现这一功能的相关技术和步骤:

1. 截图捕捉:首先,需要有一个方法来捕捉网页的截图,这可以通过浏览器插件、屏幕捕获工具或专门的应用程序来完成。

2. 图像处理:捕捉到的截图可能需要进行预处理,比如裁剪、压缩或调整分辨率,以确保图像的质量。

3. 元素识别:使用图像识别技术来分析截图,识别网页中的元素,比如文本、按钮、图片等。

4. 布局分析:基于识别出的元素,分析页面的布局信息,包括元素的大小、位置和层级。

5. 样式解析:提取页面的样式信息,包括颜色、字体、间距等,并将它们转换为CSS代码。

6. HTML生成:根据布局和样式信息,生成HTML结构代码,将截图中的元素转换为HTML标签。

7. 代码优化:对生成的HTML代码进行优化,确保代码的可读性、维护性和性能。

8. 响应式设计:确保生成的网页代码能够适应不同的屏幕尺寸和设备,实现响应式布局。

9. 交互性实现:如果截图中的页面包含交互元素,需要添加相应的JavaScript代码来实现这些交互。

10. 一键操作:提供一个简单的用户界面,用户只需点击一个按钮,就可以完成截图到HTML的转换。

11. 预览功能:在转换过程中提供实时预览,让用户可以实时看到转换效果。

12. 自定义选项:允许用户对生成的HTML代码进行自定义,比如修改布局、添加额外的样式或功能。

13. 保存和导出:用户可以保存或导出生成的HTML代码,以便进一步使用或分享。

14. 错误处理:在转换过程中识别和处理潜在的错误,比如布局冲突或样式问题。

15. 兼容性测试:确保生成的网页在不同的浏览器和设备上都能正常显示和工作。

16. 安全性考虑:生成的代码应遵循安全最佳实践,避免潜在的安全风险。

17. 用户反馈:收集用户反馈,不断改进转换算法和用户体验。

18. 开源和社区支持:作为开源项目,鼓励社区参与贡献代码和改进功能。

这种一键转换技术可以大大提高网页开发的效率,尤其是对于快速原型设计和演示目的。然而,需要注意的是,自动生成的代码可能需要进一步的人工审查和调整,以确保最终产品的质量和性能。此外,一些复杂的网页效果和动态交互可能需要手动编写代码来实现。

版提取

在完成了花架子的搭建之后,现在需要看一下前端的Html代码了。

Html代码

打开这几份代码进行横行对比,可以发现里面好大一部分都是一样的

 1<!DOCTYPE html>
 2<html>
 3<head>
 4 <meta charset="utf-8">
 5 <meta name="author" content="Kodinger">
 6 <title>My Login Page — Bootstrap 4 Login Page Snippet</title>
 7 <link rel="stylesheet" type="text/css" href="bootstrap/css/bootstrap.min.css">
 8 <link rel="stylesheet" type="text/css" href="css/my-login.css">
 9</head>
10<body class="my-login-page">
11 <section class="h-100">
12 <div class="container h-100">

每一个的头部都是这样的,作为一个懒惰的程序员,当然是要把他们拎出来了。

我们写一个base.html来当作模版

以forgot.html为例,可以看出只有红框框选中的地方和其他几个文件不一样

forgot

那么我们的base.html可以写出这样

 1{% load static %}
 2<!DOCTYPE html>
 3<html>
 4<head>
 5 <meta charset="utf-8">
 6 <meta name="author" content="Kodinger">
 7 <title>
 8 {% block title %}
 9 登录
10 {% endblock %}
11 </title>
12 <link rel="stylesheet" type="text/css" href={% static 'bootstrap/css/bootstrap.min.css' %}>
13 <link rel="stylesheet" type="text/css" href={% static 'css/my-login.css' %}>
14</head>
15<body class="my-login-page">
16<section class="h-100">
17 <div class="container h-100">
18 {% block main %}
19
20 {% endblock %}
21 </div>
22</section>
23
24<script src={% static "js/jquery.min.js" %}></script>
25<script src={% static "bootstrap/js/bootstrap.min.js" %}></script>
26<script src={% static "js/my-login.js" %}></script>
27</body>
28</html>

留出了{% block main %} {% endblock %}来摆放差异的内容

模块化后的forgot

新的forgot.html如图所示。

同理,完成其他几个html的模版提取。

页面渲染部分代码编写

编写代码可以通过url访问几个页面

首先是首页

有两种方式可以实现:

  • 函数视图
  • 函数视图便于理解
  • 代码可读性与复用性都不佳
  • 类视图
  • 代码可读性好
  • 类视图相对于函数视图有更高的复用性
  • 所以选择使用类视图:
1from django.shortcuts import render
2from django.views import View
3
4class LoginView(View):
5 def get(self, request):
6 return render(request, 'login/index.html')

定义类视图的路由:

1from django.urls import path
2from . import views
3
4urlpatterns=[
5 path('', views.LoginView.as_view(), name='login'),
6]

同理,完成其他几个页面的类视图GET代码编写:

 1from django.shortcuts import render
 2from django.views import View
 3
 4
 5class LoginView(View):
 6 def get(self, request):
 7 return render(request, 'login/index.html')
 8
 9
10class ForgotView(View):
11 def get(self, request):
12 return render(request, 'login/forgot.html')
13
14
15class RegisterView(View):
16 def get(self, request):
17 return render(request, 'login/register.html')
18
19
20class ResetView(View):
21 def get(self, request):
22 return render(request, 'login/reset.html')

路由配置

1from django.urls import path
2from . import views
3
4urlpatterns=[
5 path('', views.LoginView.as_view(), name='login'),
6 path('forgot/', views.ForgotView.as_view(), name='forgot'),
7 path('register/', views.RegisterView.as_view(), name='register'),
8 path('reset/', views.ResetView.as_view(), name='reset'),
9]

页面跳转

下面修改index.html里面的a标签完成页面上直接跳转

image.png

改为 <a href={% url 'forgot' %} class="float-right">

同理找到全部需要修改的a标签

运行后点击页面上仅有的几个按钮测试跳转是否正常。

再把里面的一些英文改成中文,到此这个抄来的前端页面,大半都变成我们自己的东西了。

本土化

以上就完成了页面模版的提取与简单的类视图。

后续再讲POST的实现。

由于代码的量已经增加的有点多,全部贴出来不太美观,所以上库进行版本管理量。

Git地址:https://github.com/zx490336534/Zxapitest.git