从html lis返回json字符串

2024-06-28 19:47:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到了一个包含html列表的html文档:

<body>
<p>Once upon a time, there were <a
href="http://en.wikipedia.org/wiki/Three_Little_Pigs">three little pigs</a>:</p>
<ol>
  <li><h2>Pig A</h2>
  </li>
  <li><h2>Pig B</h2>
  </li>
  <li><h2>Pig C</h2>
  </li>
</ol>

我想把下面列出的三只小猪还给你“有三只小猪” 在类似“[“Pig a”,“Pig B”,“Pig C”]”的JSON字符串中

我试着用find\u all和re

def get_pigs():
    soup = BeautifulSoup(html_doc, 'html.parser')
    pigs = soup.body.contents[3].find_all('h2')
    import re
    p_list = soup.find(text=re.compile("Pig "))
    print(p_list)
get_pigs()

我的代码只给了我一个猪A。我不知道为什么这不能给我预期的结果,我怎么能得到正确的结果?你知道吗


Tags: re列表gethtmlbodylih2all
1条回答
网友
1楼 · 发布于 2024-06-28 19:47:33

必须从soup方法find_all中找到的每个元素中提取.text,然后只需要json.dumps这个列表

from bs4 import BeautifulSoup
import json

def get_pigs(html_doc):
  soup = BeautifulSoup(html_doc, 'html.parser')
  pigs = [elem.text for elem in soup.find_all('h2')]
  return pigs
pigs=get_pigs(open("pigs.html").read())
print(pigs)
print("json string:",json.dumps(pigs))

输出:

['Pig A', 'Pig B', 'Pig C']
json string: ["Pig A", "Pig B", "Pig C"]

Working code

相关问题 更多 >