golang 用/x/net/html写的小爬虫,爬小说

neo_5687 · · 5802 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

平时除了写代码,唯一的娱乐就是看看小说,放松一下大脑了。但在这个网站广告铺天盖地的环境下,想单纯的看会小说也成了一个问题了。最近在学习golang,于是就想写一个小爬虫,把小说爬下来看而不用看到讨厌的广告了。

网上大多数教程都是用第三方库,很多都是用github.com/PuerkitoBio/goquery这个库,但因为从来没写过web,对jquery的语法完全是空白,而go语言圣经上的示例用到x/net/html这个google自己维护的库来爬网站的链接,于是研究了一下这个库,写了一个小爬虫,事实证明这个库写爬虫完全没问题,只不过比goquery麻烦一点,毕竟goquery是在这个库的基础上封装的,这个库更底层一点。

特写下这往篇日记,记心太烂,怕过一段时间又忘了。

经过这几天恶补了一下html方面的知识,对爬虫的编写有所了解:

一:先把网站源码get到手,

二:用html.Parse解析得到html文件的结点树

三:用chrome或firefox查看网页的结构,找到想要的内容的结点

最后就是递归找到想要的结点,然后把结点下的内容写到本地文件内就ok了

要注意网页的编码,golang只能用utf8,国内很多网站用的是gbk编码,需要转码,转码可以用

github.com/mahonia库。

分析网页结构:

找了三个网站做实验,起点(utf8),笔趣阁(gbk编码)和新笔趣阁(utf8),起点的结构和另外两个不一样。

起点的:


utf8编码

找到这个结点

笔趣阁的:



gbk编码



&nbsp转码后变成乱码了,需要单独处理,不知道是库的原因还是我不会用,我觉得&nbsp不应该被转码才对,转了之后就无法正常解析了

新笔趣阁:



也是utf8,不用转码



因为不用转码,所以&nbsp能得到正确解析

代码很少,就放在一个文件里了













笔趣阁



新笔趣阁



起点

本来想直接贴代码的,但贴上来之后格式全乱了,只好截图了,代码那几张图是连在一起的。


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:neo_5687

查看原文:golang 用/x/net/html写的小爬虫,爬小说

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

5802 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传