Python爬虫之urllib模块1

 

Python爬虫之urllib模块1css

 

本文来自网友投稿。做者PG,一个待毕业待就业二流大学生。玄魂工做室未对该文章内容作任何改变。html

 

 

由于本人一直对推理悬疑比较感兴趣,因此此次爬取的网站也是平时看一些悬疑故事的网站,同时也是由于这个网站在编码上面和一些大网站的博客不一样,并不那么规范,因此对于初学者仍是有必定的挑战性的。我打算把这个爬虫分三次讲,因此每次都先完成一个小目标(固然不是一个亿啦),此次课咱们先爬取当前页面的而且下载第一篇文章。第二次课咱们就将爬取当前页面的=全部的连接进行下载,第三次课咱们将把整个板块的文章都下载下来。python

演示系统用的是kali,由于懒得去配置各类py模块了,就利用系统已经配置好的,浏览器是firefox,使用的IDE是微软的vscodelinux

 

首先咱们选取了咱们要爬取的网站http://tuilixue.com/,先检查一下robots.txt看看是否存在有一些反爬虫的信息正则表达式

很好,这里没有什么限制windows

 

而后咱们到我平时比较常去的板块看看,http://tuilixue.com/zhentantuilizhishi/list_4_1.html咱们如今想要爬取的文章就是这样的浏览器

 

右击鼠标查看源代码,咱们能够看到,咱们想要爬取的连接就是这样的微信

来一张清晰的ide

可是咱们要怎么办才能使python获得这个网页的源代码呢函数

咱们可使用pythonurllib模块提供的open方法,首先咱们先新建一个py文件,惯例

#-*-coding:utf8-*-

#!usr/bin/python

由于是linux系统,因此python路径不一样于windows,第一行代码说明是用的uft-8进行编码

在这里咱们要先导入urllib这个模块,使用import导入

这里实际上是两个方法,一个open一个readopen用于从网站上获取网页代码,read是为了读出来好打印

咱们能够获得上面结果,可是咱们发现字符彷佛成了乱码,为了找到缘由,咱们再来看看源码

咱们彷佛找到了缘由,网页使用的是gb2312进行编码的,可是咱们是使用utf-8的,因此致使的乱码,对这方面不解的同窗能够去找一些编码的知识看看。下面咱们用一个编码转换来尝试获取正确的编码

你们这时能够看到,咱们经过强制的编码将获取的网页从新经过gb2312进行编码,咱们就能够看到正确的字符了,可是在咱们的此次课中并不须要这样的转码,这里只是为了显示获取的是正确的网页,从图中看到,咱们获取的正是咱们须要进行爬取的页面。

下一步,咱们须要获取咱们本页的全部的文章连接了,这里须要有一点htmlcss的知识,关于这部分的知识,你们本身去掌握就好了,不须要太深刻。如图中显示的,href后面的就是咱们在本次课中须要爬取的连接,每页都有10篇文章是咱们须要爬取的,咱们先从第一篇的连接开始。

 

这时候咱们就要想咱们应该怎么样去获取到这个页面的连接了,若是正则表达式好的同窗应该是想到了采起正则表达式进行获取,可是这里有一个问题,一个html页面中有如此多的a开头的元素,也有如此多的href开头的元素,想要经过正则去定位仍是有点难的,就算定位出来,也是一大堆的代码,这就不利于可读性了。这时咱们应该再从html文本中去分析。咱们使用type函数进行类型的判断。

经过对pageContent的类型分析,咱们知道这是一个字符串类型

这样咱们就可使用字符串中的find函数了,咱们须要对find函数有一个了解

函数中说明了从字符串中寻找目标字符,返回找到的第一个下标,若是没有找到就返回-1,同时能够设置开始寻找的位置和结束的位置。

咱们再看到文本

咱们发现是在div class=“liszw”下的li元素中的a元素中含有咱们须要的连接,这时咱们一个个来分析。

Li不能做为咱们的选择了

a也不行

这个数量就比较接近了,我再看看先后文的规律发现/span><a彷佛是符合咱们的要求的

这时咱们发现这和咱们所要爬取的连接数量上是彻底吻合的。咱们就来试试。

这里咱们采起了一个切片操做,这时咱们发现连接其实已经爬取到了,可是仍是有些不完美,咱们再来完善一下他。

咱们来对比一下咱们的网页上的第一个连接

这样咱们就成功的爬取了第一个连接,如今咱们来准备下载第一篇文章。从前面咱们能够知道,咱们能够把网页经过pythonurllib模块下载下来,那么一样的道理,我同样也能够经过urllib模块对文章进行下载。咱们经过连接的最后一串数字对下载下来的文件进行命名。并在下载玩后打印end进行提示。

咱们能够看到,路径下是没有文件的。如今咱们开始下载。

从这里看咱们的文件应该是下载成功了,咱们去文件路径下面看看。

 

 

文件下载是成功了,咱们来打开看看。这个地方要注意地址栏的连接

 

 

这样,咱们第一篇的文章就下载成功了。

未完,待续。请持续关注 微信订阅号:玄魂工做室(xuanhun521)

相关文章
相关标签/搜索