前面的章节
本节章节 爬一个图片网站上
爬虫是啥
网络爬虫是什么?
看意思是一个虫子,一个什么虫子?实际上指的是蜘蛛spider。
蜘蛛结成网,在网上爬来爬去的寻找坠入网络中的食物。
网络爬虫就是差不多的意思,在互联网上爬来爬去的寻找你的精神食物。
开始爬前的准备
要开始爬,你得先知道爬哪里吧,你得先获得网页的源码即HTML信息吧,获得后,你需要分析出链接和图片等资源吧。
要获取HTML并分析网页信息,需要下载一个第三方的库requesets,下载地址:
下载并解压
最重要的是 这个库有完善的中文资料 ,讨厌蝌蚪文的可以放心的参考
你如果和我一样使用pycharm来编辑,加入第三方库的步骤如下:
安装好requests第三方库后,开始测试
开始获取HTML
怎么样,惊喜不惊喜,简单不简单,使用其它语言,无法用这么简单的语句就获得html的信息。
解析HTML
使用request获取了网页源码,下一步就是如何解析了,你如果用过C++等语言,你会发现很难找到顺心的网页解析库,但python在这方面却很擅长。
还是用一个第三方库 Beautiful Soup
这是个什么库呢?
直译为:漂亮的汤?
难道是将网页作为美味的汤,从这汤里慢慢品味其中滋味,抽丝剥茧的分析汤的构成成分、汤的味道? 老外的思路,真难猜,先不管这个了。
说白了,就是用来解析HTML或XML,从中提取有用数据的库。
而且也有强大的中文支持
首先分析,解析哪些链接
这应该是按类别来分的,我们在源码中找到这一项
之所以有乱码,很可能是与我电脑没有日文字体有关也可能编码不正确,先不管它了,目前对解析无影响,可以看出,这些类别是放在class=menu的div下了,具体的就是这个DIV下的
1、好了,首先第一步,获得这个DIV
这样我们就获得了这个DIV的内容,下面再继续解析这个DIV
2、解析DIV
解析这个DIV,还要以这个DIV内容为参数,构造一个BeautifulSoup(以下简称为BS :) 注意绝不是鄙视的意思)对象,因为全篇只有一个menu 类型的DIV,所以所有类型都保存在上面解析的div_menu[0]中了,将这个对象强制转换为字符串类型做BS的参数
看源码可以发现,链接都是站内链接
现在注意了,我要把所有的链接提取出来
输出所有的链接
对应HTML源码
可以看到,第一个 a标签,是没有href属性的,所以,会输出None,其它a标签,正常输出
因为这些都是站内链接,
我们先定义一个变量,表示该站的域名
又因为,有的链接可能是none,所以需要判断下是否存在href属性,下面是输出所有链接的代码
输出的链接如下:
这样,我们就正确的获得了这些类别对应的网址了。
下一步工作,下一节再说,现在还有些事,改天聊