(学习笔记) 爬虫入门(2)

2018-12-20  本文已影响0人  半颗卷心菜

           本次内容学自莫烦Python2.2

这次要爬的是这个网站https://morvanzhou.github.io/static/scraping/list.html

网站首页

图1 要爬取的网站首页

源码

图2 要爬取的网站的源码

        这次要爬好像也没有什么很特别的,就是比昨天的多了一些CSS代码,只是要注意一下,下面class="month"和<style>中的.month是对应起来的。看来也要多了解一下CSS了。

第一步还是和昨天的一样,先把网站的信息抓下来(剩下的电脑不够大,结果截不下了):

图3 抓取网站信息

        第二步,解析html文档

图4 解析html文档

        这里的month是一个结果的集合,get_text()就不多说了。

        find_all()第一个参数可以看出来是要查找的标签,第二个参数就相当于是一个字典了,那这句话就可以翻译成:找到soup中的<li>标签里‘class=month'的所有信息。但这里奇怪的是'二月',它的class='feb month'。所以我这里把month中<li>标签的<class>都输出来看了一下:

图5 class=?

        所以beautifulsoup在解析的时候就以空格为分隔符把他们分成了多个字符串,而不是一个单独的字符串。

        这里的结果也是字典中的value的类型

图6 m['class']类型 图7 一般的value类型

        然后就是抓取class="jan"的信息,也就是一月的信息了:

图8 抓取一月的信息

    后面输出一月的文本信息的时候,视频是将jan中的<li>标签再筛选出来,做个子集:

图9 报错

        不过这里我用python3.7是报错了,不知道是不是版本问题,这里说'beautifulset对象'没有'findAll'这个属性(不是我find_all写错了,用find_all一样报错,后来我发现findAll好像和find_all一样的)

不过如果只是单纯的想打印出一月中的信息的话还是简单的,这里我用了两种:

图10 打印一月份的信息

        后来我没事type(jan)和type(jan[0])的时候:

图11 查看类型

        我发现jan[0]是tag类型的,那么,resultset没有findAll,Tag有啊!果然: 

图12 jan的子集

        这里我发现一个问题,好像用findAll返回的结果都是resultset,而resultset又不可以用findAll和get_text方法。

        而这里的findAll又可以以list[0]的这种方式把resultset的value(tag)取出来(好绕啊)

上一篇 下一篇

猜你喜欢

热点阅读