使用<title>标签和发布日期重命名HTML文件

时间:2019-10-17 10:30:09

标签: python html awk beautifulsoup rename

我想使用HTML标题标签和发布日期来重命名HTML文件。

我在这里使用标题标签找到了标题的答案:

修改后的代码:

#!/bin/bash
for f in $(find . -type f | grep \.html)
   do
   title=$( awk 'BEGIN{IGNORECASE=1;FS="<title>|</title>";RS=EOF} {print $2}' "$f" )
   mv -i "$f" "${title//[ ]/-}".html
done

Renaming HTML files using <title> tags

不确定日期部分如何工作。

结果将是title_PublicationDate.html

以下是示例网址:https://www.voltairenet.org/article178442.html

该名称将从“ article178442.html”重命名为“ Paul Craig Roberts_20130508.html的You Are the Hope”

以下是其中包含发布日期的行:

第19行:

<meta property="og:article:published_time" content="2013-05-07T23:31:07Z" />

第207行:

<span class="updated" title="2013-05-8"><time datetime="2013-05-08 02:31:07" pubdate>| 8 May 2013</time></span></span>

编辑:是否可以使用Open Graph标签使用python和漂亮的汤来做到这一点?

2 个答案:

答案 0 :(得分:1)

您可以使用meta标签中的sed来增加发布日期:

<meta property="og:article:published_time" content="2013-05-07T23:31:07Z" />

sed脚本用于YYYYMMDD中的额外pub_date

pub_date=$(sed -n -e 's/.*meta property.*published_time.*\([0-9][0-9][0-9][0-9]\)-\([0-9][0-9]\)-\([0-9][0-9]\).*/\1\2\3/p')

代码是“机会主义的”,并且假定meta标签的结构非常特殊。但是,对于快速又肮脏的解决方案-它会起作用。使用$ pub_date构造文件名

答案 1 :(得分:1)

我花了一些时间进行猜测,您的问题不是很清楚,但是我得出了以下解决方案:

我制作了一个名为renamer的git repo。可以从包含所有索引文件的文件夹内部运行此快速小脚本,它将提取文件夹中的所有.html文件,并将它们重命名为相应html文件的<title>标签内的文本以及它的发布日期,这是我从html文件中的meta标签之一获取的。该脚本假定html元素中的meta标签结构,因此只要meta标签结构保持不变,它就应该起作用。

注意: 从github下载的文件必须放在html文件目录内的文件夹中(请参见下图)

您可能已经知道,但是将文件放置在文件夹中后,请在程序的文件夹中运行npm install。这将安装所有必需的依赖项,在这种情况下为file-systempathreadline

要运行该程序,请在程序文件夹中输入node main,如此一来,父文件夹中的所有html文件都将被重命名。

The files before the program has been engaged

The files after the program has been engaged

The command to run inside of the folder containing my program

The folder in which the downloaded files should be located

理论上,您也应该能够将程序保留在索引文件所在的文件夹中,以备将来使用。如果以后需要快速更改一些名称,非常方便:)

希望我回答了你的问题。