我们来写个简单的爬虫####
需要用到的模块
需要用到python的urllib和lxml模块,urllib为python的自带模块,lxml需要自行安装:
pip install lxml
简单介绍urllib和lxml的使用
我们使用urllib来爬去一个网页比如:
In [1]: import urllib In [2]: # 爬起豆瓣首页In [3]: html = urllib.urlopen("https://www.douban.com/").read() In [4]: # 整个html打印出来太多,这里我们就保存在文件中,再查看In [5]: of = open("db_index.html","w") In [6]: of.write(html) In [7]: of.close()
使用lxml主要用于解析网页(这里只是简单示范),比如:
In [8]: from lxml import etree In [9]: html = u'<div class="test1"><h1>我是标题</h><p>哈哈哈哈</p></div></html>'In [10]: # 我们如何获取class为test1的div标签中的文字呢?In [11]: selector = etree.HTML(html) In [12]: text = selector.xpath("http://div[@class='test1']//text()") In [13]: print text [u'\u6211\u662f\u6807\u9898', u'\u54c8\u54c8\u54c8\u54c8'] In [14]: # 很明显是个listIn [15]: for t in text: ...: print t ...: 我是标题 哈哈哈哈 In [16]: # 当然也可以单独获取标题In [17]: text = selector.xpath("http://div[@class='test1']/h1/text()") In [18]: print text[0] 我是标题
爬取“下厨房”网站的教程
因为网站中同一类型的页面的html代码结构都一样,所以我们只需要写一套解析代码就能用在它所有的同类型的页面中。
我们爬取下厨房的教程的内容页面,代码如下:
#!/usr/bin/env python#-*-coding:utf-8-*-import urllibfrom lxml import etree# 获取网页html,拿"下厨房"这个网站来示例html = urllib.urlopen("http://www.xiachufang.com/recipe/102272250/").read() selector = etree.HTML(html)''' 一个网站中相同类型的页面的结构基本都是一样的, 所以我们下面写得适合这个网站所有的同类型页面 '''# 获取内容标题title = selector.xpath('//title/text()')[0] print("标题: {}".format(title))# 获取作者昵称author= selector.xpath("http://div[@class='author']//span/text()")[0] print("作者: {}".format(author))# 作者头像链接portraits_url = selector.xpath("http://div[@class='author']//img/@src")[0] print("头像链接:{}".format(portraits_url))# 保存头像# 保存在当前目录imgname = "portraits_{}".format(portraits_url.split("?")[0].split("/")[-1]) urllib.urlretrieve(portraits_url, filename=imgname)# 获取正文:作者的前言contents1 = selector.xpath("http://div[@class='desc mt30']/text()")for c in contents1: print c# 获取正文:教程用料contents2 = selector.xpath("http://div[@class='ings']/text()")for c in contents2: print c# 获取步骤正文中的每一步的<p>代码块contents3 = selector.xpath("http://div[@class='steps']//p[@class='text']/text()")# 获取步骤正文中的全部图片imgurls = selector.xpath("http://div[@class='steps']//img/@src")for c in contents3: # 获取每一步骤的文字并打印 print c l = len(imgurls)for i in range(0, l): print imgurls[i]# 保存图片: # 保存在当前目录 imgname = "img{}_{}.jpg".format(i, title) urllib.urlretrieve(imgurls[i], filename=imgname)
运行看下:
(venv) allenwoo@~/renren/code$ python crawl.py 标题: 【设计师的品质早餐——能量爆炸三明治的做法】设计师的品质早餐——能量爆炸三明治怎么做_设计师的品质早餐——能量爆炸三明治的家常做法_下厨房 作者: 细嗅蔷薇natalie 头像链接:http://s2.cdn.xiachufang.com/2ced0090ebfa11e594d1b82a72e00100.jpg?imageView2/1/w/60/h/60/interlace/1/q/90 我是一个时装设计师,追求品质不仅体现在服装上,也体现在美食中。百吉福芝士片就是三明治的灵魂,让普通的吐司,肉类和蔬菜也瞬间有范起来。 这款能量爆炸的三明治作为上班族的外带午餐也是非常好的选择,到了下班都不会饿哦!要做到“爆炸”的效果,那应该尽量塞进更多的食材。需要一张保鲜膜来包紧食材不外漏。因为放的食材多,也要有沙拉酱花生酱这种酱料一个调味第二个起粘合作用,也可以用薯泥,牛油果泥等等又好吃又可以起到粘合作用。 所有食材准备好。 吐司上面抹上低脂沙拉酱。 不喜欢吃边的就切掉,我没切。 放上生菜叶子压一下,再放一片百吉福香浓原味芝士片。 烤鸡胸切成厚片,如果你想纵向切开就横向摆放,这样切开的横截面比较好看。然后尽量中间堆的厚一点,四边薄。 牛油果捣成泥作为粘合剂。 放上番茄片。 按住吐司的边边把保鲜膜尽量的包紧,要用点巧劲儿啦 用一把锋利的刀干脆利落切成两半。 包上油纸美化一下,享用吧!http://s2.cdn.xiachufang.com/74c5590a27d411e7947d0242ac110002_5616w_3744h.jpg?imageView2/2/w/300/interlace/1/q/90http://s2.cdn.xiachufang.com/74e5229e27d411e7947d0242ac110002_5616w_3744h.jpg?imageView2/2/w/300/interlace/1/q/90http://s2.cdn.xiachufang.com/6c52939427cc11e7947d0242ac110002_5616w_3744h.jpg?imageView2/2/w/300/interlace/1/q/90http://s2.cdn.xiachufang.com/6d72d51827cc11e7bc9d0242ac110002_5616w_3744h.jpg?imageView2/2/w/300/interlace/1/q/90http://s2.cdn.xiachufang.com/6d3c711c27cc11e7947d0242ac110002_5616w_3744h.jpg?imageView2/2/w/300/interlace/1/q/90http://s1.cdn.xiachufang.com/5b64d93e27cc11e7bc9d0242ac110002_5616w_3744h.jpg@2o_50sh_1pr_1l_300w_90q_1whhttp://s2.cdn.xiachufang.com/705e7f8e27cc11e7bc9d0242ac110002_5616w_3744h.jpg?imageView2/2/w/300/interlace/1/q/90http://s2.cdn.xiachufang.com/c4fa4fda27ce11e7947d0242ac110002_5616w_3744h.jpg?imageView2/2/w/300/interlace/1/q/90
看看下载的图片:
Paste_Image.png
我们换一个下厨房的同类型网页再试试:
比如:早餐卷教程页面,
http://www.xiachufang.com/recipe/268278/
(venv) allenwoo@~/renren/code$ python crawl.py 标题: 【早餐卷的做法】早餐卷怎么做_早餐卷的家常做法_下厨房 作者: 虎妈尚菜 头像链接:http://s2.cdn.xiachufang.com/13d504e3811b11e582e621381ef80f49.jpg?imageView2/1/w/60/h/60/interlace/1/q/90 胡萝卜丝土豆丝海带丝豆腐衣鸡蛋,一起卷入饼中,做早餐内容够丰厚营养够全乎热量还不高,其实做法还是简单至极的。头天晚上将各类菜焯烫至熟,不是炒熟,煮的稍软的都,清新的味道跟炒完全不同。第二天早起在卷饼上贴个热乎的鸡蛋,刷上自己喜欢的甜酱或者辣酱,再卷上提前腌制好的杂菜,3分钟足够的事儿,营养全面又可口的鸡蛋饼就做好了,口感香嫩软,很好吃。 将220克滚开的水倒入加了盐面粉中,用筷子搅拌均匀后再加入冷水30克拌匀 把面揉成光滑的面团,10分钟左右 拿出后等量分割成10个小剂子 将面剂子擀成圆形薄片 放入电饼铛,盖上盖子半分钟 然后掀起翻个面再继续盖半分钟即可 胡萝卜跟土豆洗净后切细丝。豆腐衣要焯烫后再切丝 将胡萝卜丝、土豆丝、海带丝、豆腐衣,分别用清水焯烫至熟 捞出后将所有杂菜混在一起,加入生抽、芝麻油拌匀,然后存冰箱,腌制入味,随用随取 转天一早,先预热电饼铛,然后再切点葱花放入磕了鸡蛋的碗中,并打散 将一张卷饼放入电饼铛,倒上葱花蛋液,鸡蛋凝固即可取出 在蛋饼上抹上拌饭酱 再铺上杂菜 卷起即可,趁热食用 胡萝卜跟土豆洗净后切细丝。豆腐衣要焯烫后再切丝 将胡萝卜丝、土豆丝、海带丝、豆腐衣,分别用清水焯烫至熟。各类菜是清水焯烫,千万不要用油炒,口感不同的 捞出后将所有杂菜混在一起,加入生抽、芝麻油拌匀,然后存冰箱,腌制入味,随用随取 转天一早,先预热电饼铛,然后再切点葱花放入磕了鸡蛋的碗中,并打散 将一张卷饼放入电饼铛,倒上葱花蛋液,鸡蛋凝固即可取出 在蛋饼上抹上拌饭酱 再铺上杂菜 卷起即可,趁热食用http://s1.cdn.xiachufang.com/d842a8ac945411e6a9a10242ac110002_216w_330h.jpg@2o_50sh_1pr_1l_300w_90q_1whhttp://s2.cdn.xiachufang.com/d81316fa945411e6a9a10242ac110002_220w_324h.jpg?imageView2/2/w/300/interlace/1/q/90http://s1.cdn.xiachufang.com/d7efa6f2945411e6b87c0242ac110003_212w_322h.jpg@2o_50sh_1pr_1l_300w_90q_1whhttp://s2.cdn.xiachufang.com/d7c617c4945411e6a9a10242ac110002_214w_323h.jpg?imageView2/2/w/300/interlace/1/q/90http://s2.cdn.xiachufang.com/d79e01c6945411e6a9a10242ac110002_217w_323h.jpg?imageView2/2/w/300/interlace/1/q/90http://s2.cdn.xiachufang.com/d772b78c945411e6b87c0242ac110003_220w_330h.jpg?imageView2/2/w/300/interlace/1/q/90http://s2.cdn.xiachufang.com/d743d566945411e6a9a10242ac110002_222w_323h.jpg?imageView2/2/w/300/interlace/1/q/90http://s1.cdn.xiachufang.com/d70f24ec945411e6a9a10242ac110002_215w_324h.jpg@2o_50sh_1pr_1l_300w_90q_1whhttp://s2.cdn.xiachufang.com/d6bf2550945411e6b87c0242ac110003_215w_326h.jpg?imageView2/2/w/300/interlace/1/q/90http://s2.cdn.xiachufang.com/d682ed1a945411e6a9a10242ac110002_220w_323h.jpg?imageView2/2/w/300/interlace/1/q/90http://s2.cdn.xiachufang.com/d656fe26945411e6a9a10242ac110002_217w_322h.jpg?imageView2/2/w/300/interlace/1/q/90http://s2.cdn.xiachufang.com/d6245f20945411e6b87c0242ac110003_219w_329h.jpg?imageView2/2/w/300/interlace/1/q/90http://s2.cdn.xiachufang.com/d5c232c8945411e6b87c0242ac110003_218w_327h.jpg?imageView2/2/w/300/interlace/1/q/90http://s1.cdn.xiachufang.com/d58c985c945411e6a9a10242ac110002_219w_331h.jpg@2o_50sh_1pr_1l_300w_90q_1whhttp://s1.cdn.xiachufang.com/d51f27e0945411e6a9a10242ac110002_219w_323h.jpg@2o_50sh_1pr_1l_300w_90q_1whhttp://s1.cdn.xiachufang.com/d4e25bc6945411e6b87c0242ac110003_216w_326h.jpg@2o_50sh_1pr_1l_300w_90q_1whhttp://s2.cdn.xiachufang.com/d4a94cfa945411e6a9a10242ac110002_219w_331h.jpg?imageView2/2/w/300/interlace/1/q/90http://s2.cdn.xiachufang.com/d47030f0945411e6a9a10242ac110002_222w_328h.jpg?imageView2/2/w/300/interlace/1/q/90http://s2.cdn.xiachufang.com/d443709c945411e6a9a10242ac110002_220w_332h.jpg?imageView2/2/w/300/interlace/1/q/90http://s2.cdn.xiachufang.com/d41461d0945411e6a9a10242ac110002_222w_332h.jpg?imageView2/2/w/300/interlace/1/q/90http://s2.cdn.xiachufang.com/d3c62934945411e6b87c0242ac110003_226w_328h.jpg?imageView2/2/w/300/interlace/1/q/90http://s1.cdn.xiachufang.com/d3952c76945411e6b87c0242ac110003_220w_330h.jpg@2o_50sh_1pr_1l_300w_90q_1wh
下载的图片:
爬去“下厨房”教程页面的简单爬虫就这样喽
作者:退出简书黑
链接:https://www.jianshu.com/p/716e881012bc
點擊查看更多內(nèi)容
為 TA 點贊
評論
評論
共同學(xué)習(xí),寫下你的評論
評論加載中...
作者其他優(yōu)質(zhì)文章
正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦