我终于失去了你,在拥挤的人群中。
最近在用 Python 写爬虫, 然后就想用 Go 写一写, 然后稀里糊涂的发现这个站有一个接口可以直接请求数据, 那还爬啥啊, 请求吧。
然后发现不会写 POST 接口, 简直菜的抠脚。
其实也没啥, 就是有一个坑, 请求头必须要设定Content-Type为application/x-www-form-urlencoded,post参数才可正常传递。然后就没啥了。
所有代码仅作为学习啊。
贴代码吧
1 | package main |
请求头必须要设定Content-Type为application/x-www-form-urlencoded,post参数才可正常传递。
goroutine的用法
这里有一个关于 goroutine 的用法问题。
这个东西是啥就不BB了。
有没有像Python多进程/线程的那种等待子进/线程执行完的join方法呢?当然是有的,可以让 Go 协程之间信道(channel)进行通信:从一端发送数据,另一端接收数据,信道需要发送和接收配对,否则会被阻塞:
1 | func fetch(targetURL string, i int, ch chan bool) { |
而在main函数中,在用一个for循环,<- ch 会等待接收数据(这里只是接收,相当于确认任务完成)。