1 Star 0 Fork 15

sanyecao2314/surfer

forked from andeyalee/surfer 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
surfer.go 1.54 KB
一键复制 编辑 原始数据 按行查看 历史
henrylee2cn 提交于 2016-01-07 03:05 . update
// surfer是一款Go语言编写的高并发爬虫下载器,支持 GET/POST/HEAD 方法及 http/https 协议,同时支持固定UserAgent自动保存cookie与随机大量UserAgent禁用cookie两种模式,高度模拟浏览器行为,可实现模拟登录等功能。
package surfer
import (
"net/http"
"os"
"sync"
)
var (
surf Surfer
phantom Surfer
once_surf sync.Once
once_phantom sync.Once
fullTempJsFilePrefix = "./tmp/phantomjs"
fullPhantomjsName = os.Getenv("GOPATH") + "/src/github.com/henrylee2cn/surfer/phantomjs/phantomjs"
)
func Download(req Request) (resp *http.Response, err error) {
switch req.GetDownloaderID() {
case SurfID:
once_surf.Do(func() { surf = New() })
resp, err = surf.Download(req)
case PhomtomJsID:
once_phantom.Do(func() { phantom = NewPhantom(fullPhantomjsName, fullTempJsFilePrefix) })
resp, err = phantom.Download(req)
}
return
}
//销毁Phantomjs的js临时文件
func DestroyJsFiles() {
if pt, ok := phantom.(*Phantom); ok {
pt.DestroyJsFiles()
}
}
// Downloader represents an core of HTTP web browser for crawler.
type Surfer interface {
// GET @param url string, header http.Header, cookies []*http.Cookie
// HEAD @param url string, header http.Header, cookies []*http.Cookie
// POST PostForm @param url, referer string, values url.Values, header http.Header, cookies []*http.Cookie
// POST-M PostMultipart @param url, referer string, values url.Values, header http.Header, cookies []*http.Cookie
Download(Request) (resp *http.Response, err error)
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/fans2314/surfer.git
git@gitee.com:fans2314/surfer.git
fans2314
surfer
surfer
master

搜索帮助