如何用linux命令或bash脚本解析大量的html文件

时间:2014-03-06 13:23:31

标签: linux bash shell

我使用wget命令镜像网站。我为此写了一个脚本。该脚本每天通过crontab获取该网站的副本。镜像存储在/var/www下,以便从浏览器(localhost)进行访问。但我想从HTML文件中删除用户输入区域,如登录或搜索。我可以手动解析文件,但我想用脚本解析。你能救我吗?

3 个答案:

答案 0 :(得分:0)

可能你正在寻找像这样的东西

cat your-html | sed -e 's/\<input.*type="text".*\>//g' | sed -e 's/\<input.*type="password".*\>//g' > new.html

答案 1 :(得分:0)

由于您没有告诉我们要解决的问题,我们无法帮助您了解具体信息,但要删除HTML文件树中任意位置的foo</bar>,例如< / p>

find /var/www/mirror.example.com -type f -name '*.html' \
    -exec sed -i 's/foo//;s%</bar>%%' {} \;

如果find支持\+而非\;,则可以提高效率。

答案 2 :(得分:0)

您可以使用Ex编辑器就地编辑html页面,例如:

ex -V1 $PAGE <<-EOF
  " Correcting missing protocol, see: https://github.com/wkhtmltopdf/wkhtmltopdf/issues/2359 "
  %s,'//,'http://,ge
  %s,"//,"http://,ge
  " Correcting relative paths, see: https://github.com/wkhtmltopdf/wkhtmltopdf/issues/2359 "
  %s,[^,]\zs'/\ze[^>],'http://www.example.com/,ge
  %s,[^,]\zs"/\ze[^>],"http://www.example.com/,ge
  " Remove the margin on the left of the main block. "
  %s/id="doc_container"/id="doc_container" style="min-width:0px;margin-left : 0px;"/g
  %s/<div class="outer_page/<div style="margin: 0px;" class="outer_page/g
  " Remove useless html elements. "
  /<div.*id="global_header"/norm nvatd
  /<div class="header_spacer"/norm nvatd
  /<div.*id="doc_info"/norm nvatd
  /<div.*class="toolbar_spacer"/norm nvatd
  /<div.*between_page_ads_1/norm nvatd
  /id="leaderboard_ad_main">/norm nvatd
  /class="page_missing_explanation/norm nvatd
  /<div id="between_page_ads/norm nvatd
  /<div class="b_..">/norm nvatd
  /<div class="shadow_overlay">/norm nvatd
  /grab_blur_promo_here/norm nvatd
  /missing_page_buy_button/norm nvatd
  wq " Update changes and quit.
EOF

对于多个文件,请使用bufdo并通过xa一次保存所有文件。

另见: