在爬虫里面最容易爬取的就是静态网页。静态网页也就是纯粹HTML格式的网页。
这种网站适用于一般更新较少的展示型网站,爬取这种网站是比较容易的,因为所有的数据都在网页源代码里面,不需要抓包分析。
前几天在网吧跟朋友玩游戏,旁边一哥们在那看小说,瞄了一眼,我进网站一看,发现是一个盗版小说网站,这种网站没有APP,只能在网页上面看,但是页面会有非常多的广告,用户体验很差。那么今天我们就来完成对这个网站小说的爬取。
声明:本文只作为技术交流,看小说,请支持正版。
声明:本文只作为技术交流,看小说,请支持正版。
声明:本文只作为技术交流,看小说,请支持正版。
1.网页分析
写爬虫和写其他的程序不太一样,爬虫必须按照目标网站的规则来写。
这是我们的目标网站。
今天我来写一本小说的爬取,如果有兴趣,看完本文可以试一试将整个网站小说的爬取。
选择《斗神狂飙》这本小说,这是这本小说的主页面,这个页面上,有每一章节小说内容的链接。我们点开一章看看。
http://www.biquge5200.com/14_14621/6219947.html
这是读者的阅读界面,对于我们来说,这个不重要,爬虫最重要的就是要知道数据的来源。点击鼠标右键,查看网页源代码,可以看到,这一章的小说内容都写在网页源代码里面。这就是静态网页一个显著的特点,对于爬虫来说就非常方便。
2.代码实现
这三行代码可以打印出这个网页的源代码。
那么问题来了,我们不需要全部的源代码,我们只需要里面的小说部分和每一章的标题(后面写文件的时候用)。常用的就是两种方法,一种是用正则表达式来提取内容;另一种是导入BeautifulSoup模块来提取。
这里我就用正则表达式来提取。我们需要提取两个内容,一个是标题,一个是正文。标题很容易找,就在 title 标签里面,正文内容在 id = “content”的 div 标签面。
可以看到我们成功的把想要的内容获取到了,但是仍然还有点问题,了解果HTML的朋友应该知道,内容里面的
是换行符。可以用它来分割字符串。
毕竟是盗版小说网站,里面有很多广告,所以稍微处理了一下。
现在我们已经获取了一章的内容,之前说过,在小说的主页里面有每一章节的链接。所以我们从这里下手。查看网页源代码。
同样使用正则表达式,获取所有的链接都在这里了。
那么在用循环就可以获取的每一章的小说内容。这里为了避免代码的重复,可以定义函数。
现在我们虽然获取到了,但是还差把获取到文字写入本地文件。Python有一种非常方便的方法 with open,由于全是文本,我们就把他写入到txt文件中。
我在这里控制了请求间隔,间隔1秒,是因为这个网站请求太快,服务器显示太忙。如果想快一点,可以设置时间短一点。
然后就可以看小说了。
获取网站的全部内容
现在我们已经成功的爬取了一本小说了。如果我们现在想爬取整个网站呢。
点到全部小说,可以看到所有小说的链接。相信如果看明白了我上面的内容,自己应该能写出来爬取全网站的程序。这里我就不写了,有兴趣的可以研究一下。
小结
今天爬取这个网站,用到了三个模块 requests,re,time,requests是非常好用的第三方库,每个学习爬虫的朋友都应该学习的一个库。后面我也会专门写一个requests用法的文章。re库Python的标准库,是用于正则表达式的。还有一个time 模块,为了给程序写一个时间间隔。当然这些模块不仅仅有这些功能。后面的文章会慢慢写到这些内容。
对于刚接触Python或爬虫的朋友,可能看不太明白。这篇文章的思路更加重要。写爬虫就是先要手动实现,然后根据网页规则在来写。
更多有趣的内容请关注公众号:python爬虫知识。
网友评论