我有如下代碼來從 html 表中抓取特定的單元格值。您可以訪問
查看為什么使用這種解決方案
uj5u.com熱心網友回復:
您可以通過 http Post 請求獲取。不要忘記在請求中添加 X-Requested-With 標頭。
func fecthData() (map[string]interface{}, error) {
body := strings.NewReader("dil_kodu=tr")
req, err := http.NewRequest("POST", "https://www.haremaltin.com/dashboard/ajax/doviz", body)
if err != nil {
// handle err
return nil, err
}
req.Header.Set("X-Requested-With", "XMLHttpRequest")
resp, err := http.DefaultClient.Do(req)
if err != nil {
// handle err
return nil, err
}
defer resp.Body.Close()
jsonData, err := ioutil.ReadAll(resp.Body)
if err != nil {
panic(err)
return nil, err
}
var data map[string]interface{}
err = json.Unmarshal(jsonData, &data)
if err != nil {
return nil, err
}
return data, nil
}
uj5u.com熱心網友回復:
由于該表由 javascript 提供支持,我建議您使用不同的方法。這就是為什么。
你真正要刮的是
curl https://www.haremaltin.com/altin-fiyatlari > out.html
這個網頁。您可以在終端中運行此 curl 并獲得與 go 的 rest 請求完全相同的回復(在大多數情況下,exact 是一個強詞,肯定是這種情況)
如您所見,out.html您創建的檔案中不存在任何值,這就是您的 go 腳本不回傳任何值的原因。
您需要運行 javascript 來填充頁面,然后才能抓取它。
我在幾個專案中使用了這個https://github.com/chromedp/chromedp并取得了巨大的成功。通過使用此工具,您的作業流程將類似于..
- 打開無頭瀏覽器
- 轉到網址
- 轉儲頁面 html
- 用 goquery 決議
- 列印您的回復
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/492295.html
