从HTML中提取值到json文件

ttygqcqt  于 2023-07-01  发布在  其他
关注(0)|答案(1)|浏览(129)

我正在尝试从多个HTML文件中的元素提取值。
我的文件夹结构看起来像这样:

|root
    |1
        |post
            |post.html
    |2
        |post
            |post.html
    |3
        |post
            |post.html
...

我想运行一个脚本,读取HTML文件,并在同一文件夹中输出所需字段值的JSON文件。

|root
    |1
        |post
            |post.html
            |post.json
    |2
        |post
            |post.html
            |post.json
    |3
        |post
            |post.html
            |post.json
...

如果我在chrome和dev工具中打开HTML文件,我可以使用一个简单的函数:

const getPostData = () => {
    let res = {};
    var a = document.getElementsByName('post_title')[0]?.value;
    res['post_title'] = a;
... ...
    return res;
}

返回的值是我想要保存到json文件中的值。但是,我不确定如何从HTML文件中获取所需的文档变量,而无需在浏览器中手动打开它们。
我是一个很新的网页开发,任何帮助将不胜感激!

ccgok5k5

ccgok5k51#

我想你可以使用beautifulsoup4 & json来实现。如果我是对的,你会想要这样的东西。

from os import path 
import json 
from bs4 import BeautifulSoup as bs
 
def get_post_data(soup):
    post_title = soup.find_all(attrs={"name": "post_title"})
    if post_title:
       return {'post_title':post_title[0].text}

def main():
  filepaths = [path.join(curr_folder,"post") for curr_folder in os.listdir()]

  for html_filepath in filepaths:
      soup = bs(html_filepath , 'html.parser')
      data = get_post_data(soup)
      if data:
         json_filepath = html_filepath.split('.')[0] + '.json'
         with open(json_filepath,"w") as out_file:
             json.dump(data,out_file)

相关问题