chromium保存网页功能

Chromium通过DOM树序列化为HTML字符串实现保存网页功能,从WebCore::WebPageSerializerImpl::serialize开始,递归遍历DOM树进行序列化。然而,此方法对复杂网页可能导致错误的语法匹配,如百度音乐,生成的HTML文件可能无法被正确解析。相比之下,appcache虽能离线浏览,但面对结构变化的网页和需支持appcache的网页,其局限性明显。
摘要由CSDN通过智能技术生成

  chromium保存网页的功能是通过将DOM树序列化为html语言字符串的形式来实现的,它能够很好的将用户所看到的网页转换成一个html字符串。从WebCore::WebPageSerializerImpl::serialize函数可以看到整个流程。

  大体思想是以document节点为起点,在WebPageSerializerImpl::buildContentForNode函数中递归序列化整棵DOM树。其中openTagToString序列化起始标签,endTagToString序列化结束标签,saveHTMLContentToBuffer添加字符流到buffer。总的来说结构还是非常清晰的。

  但是,很遗憾。序列化的过程看似很好,实际上这样序列化生成的html文件浏览器却不一定能正确解析。因为DOM树本就不一定由一个html解析生成,其中间可能经过了无数js的各种加载,最终形成了我们所看到的网页。将DOM树序列化对于简单网页是足够的,但是对于一些复杂网页(比如百度音乐),这样序列化形成的html文件中包含很多错误的语法。比如字符串中包含标签,导致与真正的标签错误匹配。最终解析出来的是一堆乱码。

  由此可以联想到appcache,appcache的功能也类似于保存网页,让用户可以离线浏览网页。它的特点是将资源都存在cache中,重复加载过程。这样就不会出现上述问题。但它也有不足之处,对于一些复杂网页,很难保存成用户看到的东西(比如用户对网页进行过一些操作,网页的结构已经改变);网页必须支持appcache;必须在加载时保存等。

为了在lxqt系统开机时启动chromium浏览器并自动输入账号密码进行登录,您需要使用一个自动化工具,如Expect。 以下是实现此功能的步骤: 1. 安装expect工具。在终端中运行以下命令: ``` sudo apt-get update sudo apt-get install expect ``` 2. 创建一个脚本文件以启动chromium浏览器并自动输入账号密码。在终端中运行以下命令: ``` nano ~/login.sh ``` 3. 在打开的文件中输入以下内容: ``` #!/usr/bin/expect set username "your-username" set password "your-password" set url "https://your-url.com" spawn chromium-browser --noerrdialogs --disable-session-crashed-bubble --disable-infobars --kiosk $url expect "Sign in" send "$username\r" expect "Enter your password" send "$password\r" ``` 请注意替换 `your-username` 和 `your-password` 为您的登录凭据,`https://your-url.com` 为您要打开的网页地址。 4. 保存并退出文件。 5. 将脚本文件设置为lxqt系统开机自启。在终端中运行以下命令: ``` nano ~/.config/autostart/login.desktop ``` 6. 在打开的文件中输入以下内容: ``` [Desktop Entry] Encoding=UTF-8 Type=Application Name=Login Script Exec=/bin/bash /home/your-username/login.sh StartupNotify=false Terminal=true ``` 请注意将 `/home/your-username/login.sh` 替换为您的脚本文件的路径。 7. 保存并退出文件。 现在,当您启动lxqt系统时,`login.sh` 脚本将自动运行并启动chromium浏览器,并自动输入账号密码进行登录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值