#Go语言中文网:https://studygolang.com/
Go语言简介:
说起爬虫,都会想到Python中的urllib2、Scrapy、selenium等包。但当涉及到大量的网址需要爬取时,对单台机器的爬虫速度要求很高。Python中的多线程或者高并发爬虫实现起来较为麻烦,这时候原生并发的Go语言就能派上很大的用场。Go语言本身支持并发编程,相比起Python等解释型语言,它的编译速度很快,跟C++媲美。它也带有net/http包,支持爬虫功能,自带有database/sql包,支持数据库连接。
而Go在爬虫中,最突出的优点就是其方便的并行性,这让爬虫能够高效地工作,减轻工程难度。
Go语言Ubuntu下安装:
平常来说以下命令可以安装Go:
ubuntu@ubuntu:~$ apt-get install golang
但是后来在实际应用中,发现这样安装下来的Go有诸多bug,还是去官网把go的tar包下载下来,再解压
下载地址:https://www.golangtc.com/download 选择版本:go1.9.2.linux-amd64.tar.gz
下载解压后移动文件夹到自己喜欢的文件夹下,然后配置 /etc/profile 配置自己的GOPATH和GOROOT
输入 go version,有显示则配置成功
git指令的使用
在实际进行Go语言程序的编写时,借鉴别人代码的时候,会发现别人的代码中有许多github或者golang的包,例如first.go程序中包含下列import
import("database/sql"
_"github.com/jackx/pgx/stdlib"
)
(golang.com是被墙的,之后的文档会说明如何import网络不可连的包)
这时如果我们只安装了go语言,在go run first.go时则会报错:
go: missing Git command. See http://golang.org/s/gogetcmd
这个的解决方法,只需要 apt-get install git
然后我们再来run一下这个程序,又会报错,应该是无法在本地找到这个包。这是因为在这里必须要将github上面的包先下载下来,再来import
下载的命令为:
go get github.com/lib/pq
但是首先,我们要确保我们的主机可以和github的服务器连接上,如果直接运行上面的命令,会提示:
Permission denied (publickey).
这是因为主机的公钥没有提交给github.com,解决方法为:
1. 配置conf文件
ubuntu@ubuntu:~$ vim ~/.ssh/config
添加:
Host github.com
HostName github.com
Port 22
IdentityFile ~/.ssh/id_rsa.pub
2.在github.com上登陆
3. 点开头像旁边的箭头,点入setting
4. 点击SSH and GPG keys
5. 在SSH keys旁边点击 New SSH key
6. 命令行输入 vim ~/.ssh/id_rsa.pub (如果没有公钥,则输入ssh-keygen -t rsa 生成公钥,如果没有ssh包,则apt-get install openssh-server), 将文件中的字符全部copy
7. 将copy的公钥粘贴到github.com的SSH key设置中,点击Add。
8. 命令行输入
ubuntu@ubuntu:~$ eval "$(ssh-agent -s)"
ubuntu@ubuntu:~$ ssh-add
9. 尝试 ssh -T [email protected],如果配置正确,会出现
Hi Username!You've successfully authenticated, but GitHub does not provide shell access.
10. 然后使用go get github.com/lib/pq, 如果报错类似:
Username for 'https://github.com': terminal prompts disabled
那么使用命令
env GIT_TERMINAL_PROMPT=1 go get github.com/lib/pq
然后就可以在Go文件中import github.com的包了。