gpt4 book ai didi

python - 在python中抓取显示无值

转载 作者:行者123 更新时间:2023-12-04 07:52:25 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Web-scraping JavaScript page with Python

(17 个回答)


5 个月前关闭。




进口请求
从 bs4 导入 BeautifulSoup 作为 bs
导入 csv
r = requests.get('https://portal.karandaaz.com.pk/dataset/total-population/1000')
汤 = bs(r.text)
表 = 汤.find_all(class_='ag-header-cell-text')
这给了我没有值(value)的任何想法如何从这个站点抓取数据将不胜感激。

最佳答案

BeautifulSoup 只能看到在最初请求资源时直接烘焙到资源的 HTML 中的内容。您尝试抓取的内容不会嵌入到页面中,因为通常情况下,当您在浏览器中查看此特定页面时,DOM 是使用 JavaScript 异步填充的。幸运的是,记录浏览器的网络流量会显示对 REST API 的请求,该 API 将表的内容作为 JSON 提供。给定所需的 "dataset_id",以下脚本向该 API 发出 HTTP GET 请求。 (您可以根据需要更改 params dict 中的键值对)。然后将响应转储到 CSV 文件中:

def main():
import requests
import csv

url = "https://portal.karandaaz.com.pk/api/table"

params = {
"dataset_id": "1000"
}

response = requests.get(url, params=params)
response.raise_for_status()

content = response.json()

filename = "dataset_{}.csv".format(params["dataset_id"])

with open(filename, "w", newline="") as file:
fieldnames = content["data"]["columns"]

writer = csv.DictWriter(file, fieldnames=fieldnames)
writer.writeheader()

for row in content["data"]["rows"]:
writer.writerow(dict(zip(fieldnames, row)))

return 0


if __name__ == "__main__":
import sys
sys.exit(main())

关于python - 在python中抓取显示无值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66891670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com