引言:今天周末,想找本电子书看看。发现了一个很好的电子书下载网站。为了以后找书方便,顺便练习一下python3写爬虫,于是就有了今天的小成果,python3爬取电子书网站所有链接。
第一步:网站分析
首先,这是网站的首页:http://www.ireadweek.com/index.php/index/1.html。
点击网站的尾页,看看总共有多少网页。如下图:
点击之后,发现网址变为:http://www.ireadweek.com/index.php/index/218.html。 这说明总共有218个父页面。每个主页面是如下图这样的列表:
点击链接,进入任意子页面,要爬取下面的5个框框。
2.开始写代码
先获取每个父页面所有书名链接。
取得页面结构。
根据以上分析,先写代码,拼接出所有的父页面。
然后,获取某一父页面中所有书名链接:
然后,拼接子页面来获取子页面的网页内容:
再,在子页面中获取上面的5个框框里面的信息,方法也是如上,书名上鼠标右键->审查元素,得到下图:
于是,得到这样的结构分支:
body > div > div > div.hanghang - za > div: nth - child(1)
通过同样的方式,将其他信息获取。
终端打印如下:
3.遇到的问题:
1)如何提取类似下面这样内容里面的网址链接?
解决:如下,
2)如下写法会报错。
解决方法: 删除【from_encoding="utf-8"】
原因:python3 缺省的编码是unicode, 再在from_encoding设置为utf8, 会被忽视掉,去掉【from_encoding="utf-8"】这一个好了 。
3)写入csv文件后,用notepad打开正常显示,用Excel打开是乱码。如下
解决:代码中打开方式这样写:
好啦,解决了以上问题,终于可以爬取了。如果觉得有帮助的话,请支持一下。
下面上完整代码: