Go秒爬部落格園100頁新聞
利用go語言的協程併發優勢爬取網頁速度相當之快,部落格園100頁新聞標題只需一秒即可全部爬取
package main
import (
"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)
}
}
相關文章
- Python爬蟲實戰系列1:部落格園cnblogs熱門新聞採集Python爬蟲
- Python爬蟲-部落格園首頁推薦部落格排行(整合詞雲+郵件傳送)Python爬蟲
- Python爬蟲入門教程 40-100 部落格園Python相關40W部落格抓取 scrapyPython爬蟲
- Google宣佈推通吃網頁、新聞和部落格全能搜尋Go網頁
- 部落格園的部落格中插入公式公式
- 初入部落格園
- 部落格園美化教程
- 部落格園皮膚-我的部落格園皮膚設定教程
- 自定義部落格園部落格的背景圖片
- 初學者如何在部落格園釋出部落格
- 部落格園css測試CSS
- 部落格園主題&美化
- python爬蟲---網頁爬蟲,圖片爬蟲,文章爬蟲,Python爬蟲爬取新聞網站新聞Python爬蟲網頁網站
- 部落格園之自定義部落格(美化+播放器)播放器
- 頁面資料採集——網路爬蟲實戰(ASP.NET Web 部落格園為例)爬蟲ASP.NETWeb
- 01、部落格爬蟲爬蟲
- 部落格園SimpleMemory主題美化
- 部落格園 SimpleMemory 主題美化
- 部落格園自定義皮膚
- 自定義部落格園主題
- ElasticSearch 【仿】部落格園找找看頁面搜尋實現Elasticsearch
- 部落格園cnblog部落格遷移到Hexo(提供格式轉換)Hexo
- 自定義部落格園個人皮膚
- 部落格園登入請求分析
- 各人部落格園地址連結
- 部落格園主題折騰記
- 部落格園裝飾——(二)滾動到頁面頂部或底部
- 新部落格地址
- Jsoup + HtmlUtil 實現網易新聞網頁爬蟲JSHTML網頁爬蟲
- 周邊上新:部落格園滑鼠墊LOGO系列黑色簡約款Go
- 爬蟲監控1000家企業新聞動態爬蟲
- Go Markdown 部落格系統Go
- 部落格園部落格撰寫工具【開源】(可以直接黏貼圖片)
- 部落格園自用主題美化 - Light
- 你要的部落格園主題都有!!!
- 使用 Vite 開發部落格園皮膚Vite
- 部落格園去google廣告載入方法Go
- 部落格園主題修改分享 - 過年篇