如何使用fasthttp庫的爬蟲程式

金木大大大發表於2023-11-23

  如何使用fasthttp庫的爬蟲程式,該爬蟲使用Go語言爬取的影片。

  ```go


  package main


  import(


  "fmt"


  "io/ioutil"


  "log"


  "net/http"


  "net/url"


  "os"


  "strings"


  "github.com/valyala/fasthttp"


  )


  func main(){



  client:=fasthttp.NewClient()



  if err!=nil{


  log.Fatal(err)


  }


  defer resp.Body.Close()


  if resp.StatusCode==200{


  body,err:=ioutil.ReadAll(resp.Body)


  if err!=nil{


  log.Fatal(err)


  }


  fmt.Println(string(body))


  }else{


  fmt.Println("Failed to get the video,status code:",resp.StatusCode)


  }


  //提取影片連結


  links:=extractLinks(strings.NewReader(string(body)))


  for _,link:=range links{


  fmt.Println(link)


  }


  //下載影片


  for _,link:=range links{


  resp,err:=client.Get(link)


  if err!=nil{


  log.Fatal(err)


  }


  defer resp.Body.Close()


  if resp.StatusCode==200{


  body,err:=ioutil.ReadAll(resp.Body)


  if err!=nil{


  log.Fatal(err)


  }


  fmt.Println(string(body))


  }else{


  fmt.Println("Failed to download the video,status code:",resp.StatusCode)


  }


  }


  }


  func extractLinks(r io.Reader)[]string{


  var links[]string


  s:=bufio.NewScanner(r)


  for s.Scan(){


  if strings.Contains(s.Text(),"src=\""){


  //提取影片連結


  links=append(links,s.Text()[6:strings.Index(s.Text(),"\">")])


  }


  }


  return links


  }


  ```


  這個程式首先使用fasthttp庫的Get方法獲取的頁面內容。如果獲取成功,程式會列印出頁面內容。


  然後,程式會使用extractLinks函式從頁面內容中提取出所有的影片連結。這些連結會被列印出來。


  最後,程式會使用上述提取出的連結下載影片。如果下載成功,程式會列印出下載的內容。如果下載失敗,程式會列印出失敗的原因。注意,這個程式沒有處理可能出現的錯誤,因此在實際使用時需要新增適當的錯誤處理程式碼。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70032566/viewspace-2996723/,如需轉載,請註明出處,否則將追究法律責任。

相關文章