python - BeautifulSoup 无法在 Div 之间获取文本
问题描述
在一个新的网站抓取工具上工作,并且在获取 Div 之间的文本时遇到问题。我已经尝试过 .text 和 .strip() 但仍然无法获取文本。有什么建议么?
URL = 'https://preview.mcassessor.maricopa.gov/mcs/?q=504-39-014'
header ={ 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}
page = requests.get(URL, header)
soup = BeautifulSoup(page.content, 'html.parser')
value = soup.find("div", {"id": "Valuations_0_LimitedPropertyValue"})
print (value.text.strip())
解决方案
数据通过 JavaScript 从外部源加载。要加载它,请使用以下示例:
import re
import json
import requests
from bs4 import BeautifulSoup
url = "https://preview.mcassessor.maricopa.gov/mcs/?q=504-39-014"
api_url = "https://preview.mcassessor.maricopa.gov/parcel/{}/valuations/"
id_ = "".join(re.findall(r"\d+", url))
with requests.session() as s:
soup = BeautifulSoup(s.get(url).content, "html.parser")
data = s.get(
api_url.format(id_),
headers={"Authorization": soup.select_one("#Token")["value"]},
).json()
# uncomment this to print all data:
# print(json.dumps(data, indent=4))
# print some data:
for d in data:
print(
"{:<10} {:<10} {}".format(
d["TaxYear"], d["FullCashValue"], d["LegalClassification"]
)
)
印刷:
2022 800 AG / VACANT LAND / NON-PROFIT R/P
2021 800 AG / VACANT LAND / NON-PROFIT R/P
2020 800 AG / VACANT LAND / NON-PROFIT R/P
2019 800 AG / VACANT LAND / NON-PROFIT R/P
2018 1000 AG / VACANT LAND / NON-PROFIT R/P
2017 1200 AG / VACANT LAND / NON-PROFIT R/P
推荐阅读
- java - Comparator JAVA中带有比较方法的内部类
- mysql - 如何以非 localhost 用户身份登录 mysql
- python - 图像到 np 数组并保持顺序
- azure - 如何通过 Azure Basic P2S VPN 将静态 VPN 专用 ip 分配给客户端
- go - 如何在 Go 中将字节转换为布尔数组?
- html - ngbTypeahead - 悬停在菜单列表项上时显示标题
- julia - Julia Distributed - 为什么在评估表达式后没有在worker上定义变量?
- reactjs - React-Final-Form 延迟在 Field 中使用渲染道具获取输入
- image - 我可以将文件格式的容器映像(使用 docker save image >image.tar 创建)导入 Azure Container Register
- java - 有没有办法让两个 tedach 2 类在 Java 中使用彼此的变量?