本次内容学自莫烦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)取出来(好绕啊)
网友评论