簡體   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