平时除了写代码,唯一的娱乐就是看看小说,放松一下大脑了。但在这个网站广告铺天盖地的环境下,想单纯的看会小说也成了一个问题了。最近在学习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编码  转码后变成乱码了,需要单独处理,不知道是库的原因还是我不会用,我觉得 不应该被转码才对,转了之后就无法正常解析了新笔趣阁:
也是utf8,不用转码 因为不用转码,所以 能得到正确解析代码很少,就放在一个文件里了
漏了一行代码: defer text.Close() 打开的文件要手动关闭 笔趣阁 新笔趣阁 起点本来想直接贴代码的,但贴上来之后格式全乱了,只好截图了,代码那几张图是连在一起的。
网友评论