[Python][爬蟲]不同的 Content-Type (application/json)
目標是爬取 http://waste.epa.gov.tw/WasteConfigure/VocationCode.asp
所有的行業代碼與中文名稱。
按下一頁發現會load一個post的網址
接著想要在headers裡找到 “Form Data”,
這裡面應會藏著post需要的參數。
可是,這時候卻只有找到 “Requests Payload”,
這個看起來很像payload的東西,
它看起來是個json,
且Response Headers的Content-Type正是application/json。
所以我將 “Requests Payload”按下view source後的結果直接複製,
然後requests結果再用json.loads就可以得到想要的結果了。
程式碼如下,
# -*- coding:utf-8 -*-
# 爬取 http://waste.epa.gov.tw/WasteConfigure/VocationCode.asp 行業代碼(4碼)
import requests
import json
# payload for requests
payload = '{"Cond":{"KeyWord":"","Paging":{"Size":519,"Current":1,"Count":52,"RecordCount":519,"CanPrev":false,"CanNext":true}}}'
headers = {"Content-Type":"application/json",
"Referer":"http://waste.epa.gov.tw/WasteConfigure/VocationCode.asp"}
url = "http://waste.epa.gov.tw/NRS40/_ws/JsApI/CodeQuery.asmx/Vocation"
res = requests.post(url, data = payload, headers = headers)
js = json.loads(res.text)
for i in js["d"]["Result"]:
code = i["Code"]
name = i["Name"].encode("utf-8", "ignore")
print code