一直都知道爬虫很厉害,也一直都想学,但是也一直拖到现在才开始写。终于终于,今天写了第一条爬虫,开心:D非常感谢莫烦。一激动就决定“赞助”一下我们的“莫烦”大哥。所有的代码 https://morvanzhou.github.io/tutorials/data-manipulation/scraping/2-04-practice-baidu-baike/上面都有,我也不当搬运工了。今天还是想在这个学术的,神圣的地方撒撒鸡汤。
2018年已经过去9天了。现在觉着这句话很对“小时候觉得时间过得很慢,过了二十几岁以后,感觉时间真的是转瞬即逝。”18年,17年,每次在两年交接的时候就会傻傻分不清到底是哪一年。所以最近在写日期的时候写成2017年*月*日。也许是一种惯性。
惯性不知道算不算是一种“拖延”。因为我觉得自己的拖延症越来越严重了。算是今天写了爬虫的代码的一点感想吧。我发现其实你真正动身去做的时候,很多事情真的没有你想象得那么难。
我之前也尝试过写过,每一次在吹起号角的时候就败下阵来。有时候是士气低迷,有时候是战靴的鞋带没有绑好,有时候是不知道敌人在哪里。
我有很多事情需要去做。但是我常常花太多的时间在“准备”->"放弃"做这些事情上。也可能是,我没有找到做一件事情对的路子。
所以还是特别特别感谢“莫烦大神”,对于带我入门这件事情上,他帮了我很多。比如写爬虫这件事情,首先你要知道学习这个有什么用处,知道:
第一,你为什么要学。
莫烦在视频里show了一下他自己做的悉尼各个区域的租房价格的表格。这一下子就让我有了学习的兴趣。因为毕业以后,我也会租房子,我要是可以像他一样爬取房租数据,一定是一件很cool的事情。所以我决定一定要学爬虫。
第二,要知道你面对的“敌人”是谁
对于爬虫而言,它要爬取的是网页,所以你要大概了解一下网页的大体结构。
网页构成
但其实网页的结构是一件很复杂很复杂的事情,我之前也学过一段时间,真的超级复杂。我觉得它就是一个没什么逻辑性的东西。要是搁以前,我估计学到这里,又会钻到这个“大天坑”里,然后捣鼓一段时间,最后放弃。莫烦告诉我们,学习爬虫,你不需要对css语法,html语法有太多的了解,知道个大概就可以了。把我又拉回来一次。
第三,怎么"打"
兵器是什么?工欲善其事,必先利其器。剖析网页python有一利器就是BeautifulSoup。我之前自己看书也看过,但是觉得看和没看没有两样。直到莫烦一句简单明了的话,给BeautifulSoup一个定位:
>我们总结一下爬网页的流程, 让你对 BeautifulSoup 有一个更好的定位.
1. 选着要爬的网址 (url)
2. 使用 python 登录上这个网址 (urlopen等)
3. 读取网页信息 (read() 出来)
4. 将读取的信息放入 BeautifulSoup
使用 BeautifulSoup 选取 tag 信息等 (代替正则表达式)
html = urlopen(url).read().decode('utf-8')
soup = BeautifulSoup(html,features='lxml')
你可以想象一下,用python登入然后读取出来的网页内容html,经过BeautifulSoup 的“手”,就变成了一道美味的soup啦。
这碗soup里,要什么有什么。你想要标签的内容
head = soup.find('h1').get_text()
大概的爬虫就是这样一个过程。但是为了更好地击败敌人,兵不厌诈,还需要一些战术。
第四,奇门遁甲
就是我们的正则表达式。这个东西,我之前也学过。但是,用得迷迷糊糊的。(我发现,我看过的东西是挺多的,但是都很零碎,所以很容易就忘)这一次,看了莫烦的教程,然后自己再回忆一下,觉得正则表达式也没有那么复杂了。可能也是读书百遍,其义自现吧。
img_links = soup.find_all('img',{'src':re.compile(".*?\.jpg")})
利用正则表达式可以找出格式为jpg的图片链接。
小抄
第五 ,养兵千日 用兵一时
上面讲到大概就是一个简答爬虫的流程。然后就开始爬简答的百度词条。
代码见https://morvanzhou.github.io/tutorials/data-manipulation/scraping/2-04-practice-baidu-baike/
或者是我的github:(https://github.com/GreenGitHuber/Web/tree/master/crawler)
很简单的一个爬虫程序,我知道啥也不是。但是对于我而言,却是一大步。爬虫刚刚孵出,还需要很长的时间去改进。我也会一直更新我的爬虫日记,让它越来越强大!
领取专属 10元无门槛券
私享最新 技术干货