go实现爬虫
Posted asceticmonks
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go实现爬虫相关的知识,希望对你有一定的参考价值。
条件:
1.第三方包github.com/tebeka/selenium,selenium自动化测试工具
2.google驱动chromedriver.exe,要与本地浏览器的版本号对应,下载:http://npm.taobao.org/mirrors/chromedriver/
流程:
1.开启google驱动服务
2.设置浏览器参数
3.开启浏览器窗口,每次调用wd,_ :=selenium.NewRemote函数都会开启一个窗口。
3.1.比如调用页面中的某个组件,wd.FindElements(selenium.ByCSSSelector, ".xxx"),选择器符合W3C规范即可。
4.关闭窗口,webDriver.Quit()
5.关闭驱动服务,crawler.Service.Stop()
代码
type Crawler struct { ChromeDriver string Port int Service *selenium.Service Caps selenium.Capabilities } //开启驱动服务 func NewCrawler() (*Crawler,error) { crawler := &Crawler{ ChromeDriver: `E:/go_workspace/src/my_common_utils/chromedriver.exe`,//google浏览器驱动 Port: 9515, Service: nil, } opts := []selenium.ServiceOption{} service, err := selenium.NewChromeDriverService(crawler.ChromeDriver, crawler.Port, opts...) if nil != err { return nil,errors.New("start a chromedriver service falid,"+err.Error()) } caps := selenium.Capabilities{ "browserName": "chrome", } imagCaps := map[string]interface{}{ "profile.managed_default_content_settings.images": 2,//不加载图片,提高浏览器响应速度 } chromeCaps := chrome.Capabilities{ Prefs: imagCaps, Path: "", Args: []string{ //"--headless", //不弹出窗口 "--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/69.0.3497.100 Safari/537.36", // 模拟user-agent,防反爬 }, } //以上是设置浏览器参数 caps.AddChrome(chromeCaps) crawler.Service = service crawler.Caps = caps return crawler,nil } //打开窗口 func (c *Crawler) NewRemote()(selenium.WebDriver,error){ w_b1, err := selenium.NewRemote(c.Caps, fmt.Sprintf("http://localhost:%d/wd/hub", c.Port)) if err != nil { return nil,errors.New("connect to the webDriver faild,"+err.Error()) } return w_b1,nil } //关闭驱动服务 func (c *Crawler) Shutdown(){ _ = c.Service.Stop() }
以上是关于go实现爬虫的主要内容,如果未能解决你的问题,请参考以下文章