繁体   English   中英

如何从Python中的HTML代码中提取元素

[英]How to extract element from HTML code in Python

我正在尝试通过网络抓取类似 HTML 代码的多个网页。 我已经可以得到每个页面的 HTML,我可以手动找到代码字符串中放置我需要的信息的部分——我只是不知道如何正确提取它。 我相信我的问题实际上可以用 REGEX 解决,但我不知道如何解决。

我正在使用 Python 3

这是我提取页面的 HTML 代码的方式:

import requests
resp = requests.get("https://statusinvest.com.br/fundos-imobiliarios/knri11",headers={'User-Agent': 'Mozilla/5.0'})

from bs4 import BeautifulSoup
soup = BeautifulSoup(resp.content, features="html.parser")

下面是 HTML 代码的字符串 ( code -> str(soup) )。 我想提取这两个粉红色括号之间的列表。 这个块总是在我要提取的页面 HTML 代码的蓝色括号之间的行之后(每个页面的绿色文本不同)

您可以使用beautifulsoup找到正确的标签和json模块来解析值:

import json
import requests
from bs4 import BeautifulSoup

resp = requests.get(
    "https://statusinvest.com.br/fundos-imobiliarios/knri11",
    headers={"User-Agent": "Mozilla/5.0"},
)
soup = BeautifulSoup(resp.content, "html.parser")

data = json.loads(soup.select_one("#results")["value"])

print(data)

印刷:

[
    {
        "y": 0,
        "m": 0,
        "d": 0,
        "ad": None,
        "ed": "31/10/2022",
        "pd": "16/11/2022",
        "et": "Rendimento",
        "etd": "Rendimento",
        "v": 0.91,
        "ov": None,
        "sv": "0,91000000",
        "sov": "-",
        "adj": False,
    },
    {
        "y": 0,
        "m": 0,
        "d": 0,
        "ad": None,
        "ed": "30/09/2022",
        "pd": "17/10/2022",
        "et": "Rendimento",
        "etd": "Rendimento",
        "v": 0.91,
        "ov": None,
        "sv": "0,91000000",
        "sov": "-",
        "adj": False,
    },


...and so on.
import json
import requests

resp = requests.get("https://statusinvest.com.br/fundos-imobiliarios/knri11", headers={'User-Agent': 'Mozilla/5.0'})

from bs4 import BeautifulSoup

soup = BeautifulSoup(resp.content, features="html.parser")
data = json.loads(soup.find("input", {"id": "results"}).get("value")
print(data)

要获得第一个值:

print(data[0]["y"])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM