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