在地铁上,漫漫长路,想看看文章打发一下时间。然而,地铁信号不稳定,经常没网,怎么办?
在公交上,熙熙攘攘,封闭的空间,网页经常刷不出来。看着不停转动的刷新标识,最后跳出一句“网页无法打开,请检查网络设置”。
这时候的你,内心是不是有点小崩溃!
宝宝好焦灼啊别着急,看这里!
使用Python简单几步,让你轻松get新技能----没网也能看文章!
话不多说,先上图,看看效果,或许,能激发你动手爬虫的兴趣。
20170114上午-简书首页文章笔者是Python初学者,逛了知乎,看了些大神帖!最终,得出结论:了解基础知识后,别犹豫,就是干!先定一个小目标,比如:爬虫一个自己喜欢的网站。果断选择了简书!简书!简书!
正文开始了!
平台:Python3 pycharm
代码之前,先了解一下爬虫的概念吧!
百度百科是这样解释的,网络爬虫是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。通俗的讲,就是通过编写程序,从网络上获取到自己需要的数据。就像,从简书中,获取到想看的文章。
所有的爬虫过程无非都有一个大同小异的流程,见下图。
爬虫流程代码来了!
估计代码看完了,你可能和我第一次接触爬虫一样,一脸懵逼!别着急,完整的看一个小的爬虫程序,然后哪里不懂百度哪里,渐渐地,你会发现上手很快!
1.导包:导入程序中用到的包。可以大概了解一下,这些包具体是干嘛的。
1.导包2.建类:建立一个类,在里面完善相对应的方法。
getHtml() :这个方法主要是通过url,获取到相对应的网页源码。
2.类3.获取文章标题的方法
其中需要调用上一个函数,获取到网页源码。进入简书主页,按下F12,就可以看到网页源码了。然后,找到文章标题对应的代码。你会发现,所有的文章标题都是<h4 class = 'title'><a.....这样的格式。
标题源码此时,需要通过标签找到标题的内容,使用了find_all方法。因为首页有20篇文章,所以会获取到20个标题,将它们存在数组中,以后用。看到这里,大家需要看一下BeautifulSoup文档,了解里面的方法,帮助理解代码。
4.通过主页获取文章内容链接的方法
主页只是文章的标题,点击文章的链接,才可以看到正文。这个是第一篇文章的链接http://www.jianshu.com/p/fae292b61ca3,而前面部分http://www.jianshu.com是主页的链接。也就是说,要获取到文章的内容,我们需要先获取到文章的链接。
怎么获取呢?仔细的你,会发现,标题源码那张图里面有一个<a>标签,里面href属性值就是文章链接的后面部分。
同获取文章标题一样的方法,找到a标签,获取到href的属性值。同样存在数组中,以后用。
5.获取文章内容完整链接
其实,这一步可以省略。它的作用就是将简书主页链接和刚刚获取到的文章内容后面的链接结合,生成可以直接访问文章内容的链接。啊,感觉说起来好绕啊!
这一步完全可以和上一步放在一起,为了好理解,我把它们分开了。最后,同样返回一个链接数组,后用。
6.获取文章内容网页代码的方法
通过上一步获取到的urls数组,通过调用获取网页源码的方法,直接获取到文章内容的网页代码,最后返回一个文章内容的网页源码数组。
7.获取文章内容
通过解析上一步获取到的文章源码,找到文章内容所在的模块<div class = 'show-content'>,然后通过get_text()方法,获取到里面的文本内容,最后返回获取到文本内容的数组。strip()方法是去掉里面的空格。
8.写入文章,将文章保存在本地
这个方法里面会涉及到一些文件操作,可以看看一些博客,只是一些简单的文件操作。通过遍历,将文章逐篇写入txt文件,文件名为“序号.文章标题”,为了查看写入的状态,设置了相对应的输出。
其中,replace()方法主要是替代一些无法编码的字符。这一点,程序写的很不灵活,还在学习中。
9.生成对象,调用方法
实例化一个JianBook类的对象,并调用方法。程序的入口是writeText()方法。
10.查看结果
部分结果展示1 部分结果展示2 部分结果展示3就这些了,其实代码就这些了。会了这个,就可以把爬下来的txt文件,直接发到手机上,这样随时随地没网也能看文章了。是不是很方便?
好吧,我承认,没你们想象的那么方便。估计看完了,很多人会失望,对不?~~~~(>_<)~~~~
不过,动动手就知道真的不难了。并且简书文章,实时更新,也就是说,下次运行一下程序,就有好多新文章了!
一劳永逸,有没有?!
(ps:笔者也是刚学,就拿过来装~!程序里面还有很多值得完善的地方,还有大神看到了拍砖轻点,我怕痛!言归正传,主要还是记录一下学习的过程,这也算是一种巩固的方式吧!不喜勿喷。。。)
网友评论