大家好,小弟要利用爬蟲爬取鉅亨上的一些財經新聞
因為網頁每一篇網頁的連結似乎都是使用ajax render上去的,所以後來我用工具找到他們內部使用的 api : https://ess.api.cnyes.com/ess/api/v1/news/keyword?q=台積電&limit=20&page=2
不過這個api我用瀏覽器時可以正常使用,會成功回傳資料,但我用程式時卻只會回傳 400-Bad Request,也有嘗試補上user-agent等等資訊,可是還是一樣,想請問可能是哪裡有問題?
Update:
感謝各位的回答,小弟是使用golang net/http套件來發送請求,原本程式碼大致如下
func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", "https://ess.api.cnyes.com/ess/api/v1/news/keyword?q=台積電&limit=20&page=2", nil)
if err != nil {
log.Println(err)
}
//...
後來發現 http.NewRequest
這邊的網址不能直接打中文,而是要先改成URL編碼,也就能正常的回應了,感謝各位幫忙!
先在機器上直接打命令,試試用WGET或CURL是否能取得。
雖然看起來因該沒做什麼防護。
如果命令都可以正常取得。但程式還是拿到400。
那就一定是你的程式問題了。
至於啥問題?沒看到程式碼說不準的。
有沒有宣告資料的型態是 json
type: "POST",
dataType: "json",
contentType: "application/json;charset=utf-8",
import requests
r = requests.get('https://ess.api.cnyes.com/ess/api/v1/news/keyword?q=台積電&limit=20&page=2')
正常啊,不用任何特別設定。