我们说,语言决定思维方式。要掌握一种新的思维方式,学习一门新语言是最直接的方法。
我之前一直用 Python 来写爬虫,现在,尝试用 Golang 来实现一个简单的爬虫,请求网址,然后使用 XPath 提取数据。
这个爬虫项目使用 Go Mod 来管理依赖,执行下面的命令创建爬虫项目文件夹:
运行效果如下图所示:
crawler_gocrawler.go
urllibrequestsHttp for human
编写如下代码:
运行效果如下图所示:
import
resp, _:= req.Get(url)err
req
相比在 Python 中使用 lxml,在 Golang 下面使用 htmlquery 多多少少还是要麻烦一些。我们来看看如何提取练习页面的标题:
运行效果如下图所示:
从代码中可以看到,在 Golang 中使用htmlquery,每一次都要把节点传入 htmlquery 的某个函数里面。不能像 Python 里面一样通过链式调用对象的方法来获取数据。
现在我们来获取练习页上面的文字内容:
需要注意的是,第二条项目只有名字但是没有价格,我们需要在代码里面兼容这种情况:
运行效果如下图所示:
在 Golang 里面使用 XPath,还是比 Python 中要麻烦不少。这一方面是因为 Python 是面向对象的语言,而 Golang 更像是面向过程的语言。另一方面是因为 Golang 的第三方库还是不如 Python 丰富。实际上是有办法可以让 Golang 的 XPath 库达到 lxml 这种易用性的。
参考资料
[1]
req: https://github.com/imroc/req
[2]
Chapter11_example_2: http://exercise.kingname.info/exercise_xpath_2.html
[3]
htmlquery: https://github.com/antchfx/htmlquery