Golang福利爬虫
没事的时候跑两把,穷人专用。
package mainimport ("bytes""fmt""github.com/PuerkitoBio/goquery""log""math""net/http""runtime""strconv""strings""sync""time"
)func Scraper(page string, now int64) string {// Request the HTML page.ScrapeURL := "https://51.ruyo.net/page/" + pageclient := &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 documentdoc, err := goquery.NewDocumentFromReader(res.Body)if err != nil {log.Fatal(err)}// Find the review itemsvar buffer bytes.Bufferbuffer.WriteString("**********Scraped page " + page + "**********\n")doc.Find(".panel-body .entry-header").Each(func(i int, s *goquery.Selection) {// For each item found, get the band and titletitle := s.Find("h3").ChildrenFiltered("a").Text()url, _ := s.Find("h3").ChildrenFiltered("a").Attr("href")etime, _ := s.Find("div").ChildrenFiltered("time").Attr("datetime")etime = strings.Replace(etime, "+00:00", "", -1) + "Z"dt, _ := time.Parse(time.RFC3339, etime)intdt := dt.Unix()difftime := math.Abs(float64(now - intdt))//fmt.Println(now, intdt, difftime)if difftime <= 2592000 {buffer.WriteString("Review " + strconv.Itoa(i) + ": " + title + "\n" + url + "\n" + etime + "\n")}})return buffer.String()
}func main() {runtime.GOMAXPROCS(runtime.NumCPU())now := time.Now().Unix()ch := make(chan string, 5)wg := &sync.WaitGroup{}var page stringfor i := 1; i < 6; i++ {wg.Add(1)go func(i int) {page = strconv.Itoa(i)fmt.Printf("Scraping page %s...\n", page)ch <- Scraper(page, now)wg.Done()}(i)}wg.Wait()//print resultfor i := 0; i < 6; i++ {fmt.Println(<-ch)}
}
Golang福利爬虫相关推荐
- 基于golang的爬虫demo,爬取微博用户的粉丝和关注者信息
基于golang的爬虫demo,爬取微博用户的粉丝和关注者信息 注意:仅供学习交流,任何非法使用与作者无关! 目录 基于golang的爬虫demo,爬取微博用户的粉丝和关注者信息 一.背景与取材 二. ...
- Golang网络爬虫框架gocolly/colly(三)
熟悉了<Golang 网络爬虫框架gocolly/colly 一>和<Golang 网络爬虫框架gocolly/colly 二>之后就可以在网络上爬取大部分数据了.本文接下来将 ...
- golang http 返回html文件_用Golang写爬虫(三) - 使用goquery
原文地址: https://strconv.com/posts/web-crawler-exercise-3/ 在写爬虫的时候,想要对HTML内容进行选择和查找匹配时通常是不直接写正则表达式的:因为正 ...
- Golang 网络爬虫框架gocolly/colly
gocolly是Golang实现的网络爬虫框架,名列go版爬虫程序榜首. 安装 go get -u github.com/gocolly/colly/... 例子 import ( "fmt ...
- Golang 并发爬虫 爬取某著名游戏媒体
第一次在掘金水文章,有一点点小激动,哈哈 本次使用Golang抓取著名(la ji)游戏媒体 游民星空 主要使用的第三方包是 goquery ,来解析HTML,如果你没有使用过goquery也不要紧, ...
- golang微博爬虫-无登录获取cookie抓取微博
使用爬虫框架 gathertool 框架地址: https://github.com/mangenotwork/gathertool 框架下载: go get github.com/mangenotw ...
- Golang 网络爬虫框架gocolly/colly 四
爬虫靠演技,表演得越像浏览器,抓取数据越容易,这是我多年爬虫经验的感悟.回顾下个人的爬虫经历,共分三个阶段:第一阶段,09年左右开始接触爬虫,那时由于项目需要,要访问各大国际社交网站,Facebook ...
- GoLang - colly爬虫框架
大家好,我是TheWeiJun.很高兴又和大家见面了,国庆假期马上就要结束了,在国庆假期里小编看了下colly框架,故这篇文章中将提到colly的使用及分析:欢迎各位读者多多阅读与交流! 特别声明:本 ...
- 福利爬虫妹子图之获取种子url
import os import uuid from lxml import html import aiofiles import logging from ruia import Spider, ...
最新文章
- SHAREPOINT爬网设置
- 如何让滚动条出现在左边
- myBatis异常提示For input string: {1=null}
- FileZilla Server : FTP and FTPS Server
- 大数据WEB阶段(二十)更新丢失
- mysql的natural join_MySQL基础之Natural Join用法
- java os库_java-Mac OS X上的JNotify?
- linux系统中怎么复制,linux下如何屏幕拷贝?
- java se环境变量_Windows 7中配置JDK(Java SE)环境变量
- android缩放动画的两种实现方法
- javase转javaee(java web)
- 【计算几何】求三角形外接圆的周长、面积公式
- 网站克隆工具_全员惊艳!强推5款高质量的小众实用网站
- Flea CodeForces - 32C (思维)
- 1. 学校在线考试系统
- RTX3060显卡比1060跑深度学习慢?
- 伺服阀放大器|通用型电液伺服阀放大器|伺服阀放大器厂家
- 第十九届乐博杯机器人科技嘉年华!圆满落幕!
- Problem E: 类模板Sample
- 计算机网络(第7版)谢希仁著 学习笔记 第四章网络层
热门文章
- 5g的八大关键指标_2019百度沸点十大科技热词出炉,AI、5G、智能家居......实力霸榜!...
- Allegro使用技巧(3)----PCB规则检查
- vue后台管理、APP项目总结集合
- Android试玩OpenCV
- 基于 SquashFS 构建 Linux 可读写文件系统
- squashfs 的安装与使用
- 详解虚拟机下三种联网模式
- Centos7 虚拟机联网配置
- 使用Hyper-v虚拟机联网配置
- 【linux 检测端口的命令】curl、netstat和nc命令