擅长:python、mysql、java
<p>BeautifulSoup只能看到在最初请求资源时直接烘焙到该资源HTML中的内容。您试图获取的内容不会烘焙到页面中,因为通常,当您在浏览器中查看此特定页面时,DOM是使用JavaScript异步填充的。幸运的是,记录浏览器的网络流量会显示对RESTAPI的请求,该API将表的内容作为JSON提供。以下脚本向该API发出HTTP GET请求,给定所需的<code>"dataset_id"</code>(您可以根据需要更改<code>params</code>dict中的键值对)。然后将响应转储到CSV文件中:</p>
<pre><code>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())
</code></pre>