国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Golang > 正文

Go秒爬博客園100頁新聞

2020-04-01 18:53:10
字體:
來源:轉載
供稿:網友

利用go語言的協程并發優勢爬取網頁速度相當之快,博客園100頁新聞標題只需一秒即可全部爬取

package mainimport ( "bytes" "fmt" "github.com/PuerkitoBio/goquery" "log" "net/http" "runtime" "strconv" "sync")func Scraper(page string) string { // Request the HTML page. ScrapeURL := "https://news.cnblogs.com/n/page/" + page client := &http.Client{} reqest, _ := http.NewRequest("GET", ScrapeURL, nil) reqest.Header.Set("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8") reqest.Header.Set("Accept-Charset", "GBK,utf-8;q=0.7,*;q=0.3") //reqest.Header.Set("Accept-Encoding", "gzip,deflate,sdch") reqest.Header.Set("Accept-Language", "zh-CN,zh;q=0.8") reqest.Header.Set("Cache-Control", "max-age=0") reqest.Header.Set("Connection", "keep-alive") reqest.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36") res, err := client.Do(reqest) if err != nil {  log.Fatal(err) } defer res.Body.Close() if res.StatusCode != 200 {  log.Fatalf("status code error: %d %s", res.StatusCode, res.Status) } // Load the HTML document doc, err := goquery.NewDocumentFromReader(res.Body) if err != nil {  log.Fatal(err) } // Find the review items var buffer bytes.Buffer buffer.WriteString("**********Scraped page " + page + "**********/n") doc.Find(".content .news_entry").Each(func(i int, s *goquery.Selection) {  // For each item found, get the band and title  title := s.Find("a").Text()  url, _ := s.Find("a").Attr("href")  buffer.WriteString("Review " + strconv.Itoa(i) + ": " + title + "/nhttps://news.cnblogs.com" + url + "/n") }) return buffer.String()}func main() { runtime.GOMAXPROCS(runtime.NumCPU()) ch := make(chan string, 100) wg := &sync.WaitGroup{} var page string for i := 1; i < 101; i++ {  wg.Add(1)  go func(i int) {   page = strconv.Itoa(i)   fmt.Printf("Scraping page %s.../n", page)   ch <- Scraper(page)   wg.Done()  }(i) } wg.Wait() //print result for i := 0; i < 101; i++ {  fmt.Println(<-ch) }}

總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VEVB武林網的支持。如果你想了解更多相關內容請查看下面相關鏈接


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 绵阳市| 乐亭县| 交城县| 阿城市| 宜宾市| 澄迈县| 罗城| 尤溪县| 社旗县| 白银市| 凌海市| 子长县| 垦利县| 湟中县| 宁国市| 澄城县| 德化县| 怀宁县| 孟连| 陆川县| 黄梅县| 古蔺县| 鄂托克前旗| 迁西县| 永顺县| 孟津县| 屯留县| 鹤庆县| 赤峰市| 泽州县| 五常市| 庆云县| 镇原县| 木兰县| 宽甸| 秀山| 翁源县| 安康市| 原平市| 交口县| 新邵县|