我们来写个简单的爬虫####
需要用到的模块
需要用到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("//div[@class='test1']//text()")
In [13]: print text
[u'\u6211\u662f\u6807\u9898', u'\u54c8\u54c8\u54c8\u54c8']
In [14]: # 很明显是个list
In [15]: for t in text:
...: print t
...:
我是标题
哈哈哈哈
In [16]: # 当然也可以单独获取标题
In [17]: text = selector.xpath("//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("//div[@class='author']//span/text()")[0]
print("作者: {}".format(author))
# 作者头像链接
portraits_url = selector.xpath("//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("//div[@class='desc mt30']/text()")
for c in contents1:
print c
# 获取正文:教程用料
contents2 = selector.xpath("//div[@class='ings']/text()")
for c in contents2:
print c
# 获取步骤正文中的每一步的<p>代码块
contents3 = selector.xpath("//div[@class='steps']//p[@class='text']/text()")
# 获取步骤正文中的全部图片
imgurls = selector.xpath("//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/90
http://s2.cdn.xiachufang.com/74e5229e27d411e7947d0242ac110002_5616w_3744h.jpg?imageView2/2/w/300/interlace/1/q/90
http://s2.cdn.xiachufang.com/6c52939427cc11e7947d0242ac110002_5616w_3744h.jpg?imageView2/2/w/300/interlace/1/q/90
http://s2.cdn.xiachufang.com/6d72d51827cc11e7bc9d0242ac110002_5616w_3744h.jpg?imageView2/2/w/300/interlace/1/q/90
http://s2.cdn.xiachufang.com/6d3c711c27cc11e7947d0242ac110002_5616w_3744h.jpg?imageView2/2/w/300/interlace/1/q/90
http://s1.cdn.xiachufang.com/5b64d93e27cc11e7bc9d0242ac110002_5616w_3744h.jpg@2o_50sh_1pr_1l_300w_90q_1wh
http://s2.cdn.xiachufang.com/705e7f8e27cc11e7bc9d0242ac110002_5616w_3744h.jpg?imageView2/2/w/300/interlace/1/q/90
http://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_1wh
http://s2.cdn.xiachufang.com/d81316fa945411e6a9a10242ac110002_220w_324h.jpg?imageView2/2/w/300/interlace/1/q/90
http://s1.cdn.xiachufang.com/d7efa6f2945411e6b87c0242ac110003_212w_322h.jpg@2o_50sh_1pr_1l_300w_90q_1wh
http://s2.cdn.xiachufang.com/d7c617c4945411e6a9a10242ac110002_214w_323h.jpg?imageView2/2/w/300/interlace/1/q/90
http://s2.cdn.xiachufang.com/d79e01c6945411e6a9a10242ac110002_217w_323h.jpg?imageView2/2/w/300/interlace/1/q/90
http://s2.cdn.xiachufang.com/d772b78c945411e6b87c0242ac110003_220w_330h.jpg?imageView2/2/w/300/interlace/1/q/90
http://s2.cdn.xiachufang.com/d743d566945411e6a9a10242ac110002_222w_323h.jpg?imageView2/2/w/300/interlace/1/q/90
http://s1.cdn.xiachufang.com/d70f24ec945411e6a9a10242ac110002_215w_324h.jpg@2o_50sh_1pr_1l_300w_90q_1wh
http://s2.cdn.xiachufang.com/d6bf2550945411e6b87c0242ac110003_215w_326h.jpg?imageView2/2/w/300/interlace/1/q/90
http://s2.cdn.xiachufang.com/d682ed1a945411e6a9a10242ac110002_220w_323h.jpg?imageView2/2/w/300/interlace/1/q/90
http://s2.cdn.xiachufang.com/d656fe26945411e6a9a10242ac110002_217w_322h.jpg?imageView2/2/w/300/interlace/1/q/90
http://s2.cdn.xiachufang.com/d6245f20945411e6b87c0242ac110003_219w_329h.jpg?imageView2/2/w/300/interlace/1/q/90
http://s2.cdn.xiachufang.com/d5c232c8945411e6b87c0242ac110003_218w_327h.jpg?imageView2/2/w/300/interlace/1/q/90
http://s1.cdn.xiachufang.com/d58c985c945411e6a9a10242ac110002_219w_331h.jpg@2o_50sh_1pr_1l_300w_90q_1wh
http://s1.cdn.xiachufang.com/d51f27e0945411e6a9a10242ac110002_219w_323h.jpg@2o_50sh_1pr_1l_300w_90q_1wh
http://s1.cdn.xiachufang.com/d4e25bc6945411e6b87c0242ac110003_216w_326h.jpg@2o_50sh_1pr_1l_300w_90q_1wh
http://s2.cdn.xiachufang.com/d4a94cfa945411e6a9a10242ac110002_219w_331h.jpg?imageView2/2/w/300/interlace/1/q/90
http://s2.cdn.xiachufang.com/d47030f0945411e6a9a10242ac110002_222w_328h.jpg?imageView2/2/w/300/interlace/1/q/90
http://s2.cdn.xiachufang.com/d443709c945411e6a9a10242ac110002_220w_332h.jpg?imageView2/2/w/300/interlace/1/q/90
http://s2.cdn.xiachufang.com/d41461d0945411e6a9a10242ac110002_222w_332h.jpg?imageView2/2/w/300/interlace/1/q/90
http://s2.cdn.xiachufang.com/d3c62934945411e6b87c0242ac110003_226w_328h.jpg?imageView2/2/w/300/interlace/1/q/90
http://s1.cdn.xiachufang.com/d3952c76945411e6b87c0242ac110003_220w_330h.jpg@2o_50sh_1pr_1l_300w_90q_1wh
下载的图片:
爬去“下厨房”教程页面的简单爬虫就这样喽
网友评论