<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                思路:把需要爬取的url放入通道,多線程爬取。但是這個快代理有點拉,把我ip拉黑了 ``` package main import ( "fmt" "net/http" "strconv" "time" "github.com/PuerkitoBio/goquery" ) // 使用結構體 來解碼 編碼json數據 和用來接收爬取的數據 type Presult struct { Ip string `json:"ip"` // ip Port string `json:"port"` // port 端口 Anonymous string `json:"anonymous"` // 匿名度 Agreement string `json:"agreement"` //類型 Region string `json:"region"` //地區 Speed string `json:"speed"` //速度 Timeout string `json:"timeout"` //最后驗證時間 } // 采集代理ip數據 func Collection(urljob <-chan string) { for j := range urljob { // 用這個結構體儲存 請求返回的結果 proxyList := []Presult{} // 創建一個請求客戶端 client := &http.Client{} // 設置發起請求參數 re, err := http.NewRequest("GET", j, nil) // 錯誤處理 if err != nil { fmt.Println(err) } // 設置請求頭 不設置請求頭會請求失敗 re.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36") // 發起請求 resp, err := client.Do(re) // 錯誤處理 if err != nil { fmt.Println(err) } // 響應處理 if resp.StatusCode != 200 { fmt.Println("請求失敗") } // 使用goquery 的方法 返回網站的html文檔 doc, err := goquery.NewDocumentFromReader(resp.Body) //錯誤處理 if err != nil { fmt.Println(err) } // 根據標簽和節點匹配到需要的內容 doc.Find("table tbody tr").Each(func(i int, s *goquery.Selection) { ip := s.Find("td[data-title=IP]").Text() // ip port := s.Find("td[data-title=PORT]").Text() //端口 anonymous := s.Find("td[data-title=匿名度]").Text() //匿名度 agreement := s.Find("td[data-title=類型]").Text() //類型 region := s.Find("td[data-title=位置]").Text() // 位置 speed := s.Find("td[data-title=響應速度]").Text() //響應速度 timeout := s.Find("td[data-title=最后驗證時間]").Text() // 最后驗證時間 // fmt.Println(ip, port, anonymous, agreement, region, speed, timeout) //檢查一下 proxyList = append(proxyList, Presult{ Ip: ip, //ip Port: port, // port 端口 Anonymous: anonymous, // 匿名度 Agreement: agreement, //類型 Region: region, //地區 Speed: speed, //速度 Timeout: timeout, //最后驗證時間 }) }) // 輸出 這個結構體 fmt.Println(proxyList) time.Sleep(time.Second) } } func main() { // 創建一個通道 urljob := make(chan string, 1000) // 將準備爬取的url 放入通道 for i := 1; i < 10; i++ { urls := "https://www.kuaidaili.com/free/inha/" + strconv.Itoa(i) + "/" urljob <- urls } // 關閉 close(urljob) // 創建2個goroutine for j := 1; j < 5; j++ { go Collection(urljob) time.Sleep(time.Second * 10) } } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看