[英]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.