标签:
今天开始学习Python写个爬虫。
首先,从百度找个实例来看看。
注意第1行,Python需要import urllib.request,2.x版本是import urllib
第7行,同样3.4版本需要将urllib写为url.request.urlopen(),2.x版本是url.urlopen() ;
否则会报错 AttributeError: ‘module‘ object has no attribute ‘request‘
运行一下,成功抓出17张图片下来,在脚本目录下photo文件夹里。
下面来详细分析一下脚本执行的步骤;
1.总体结构分为3部分,首先import 工具包,然后定义抓取函数,最后执行此函数。
2.第3、4行,判断当前路径下是否有photo文件夹,没有就make一个。
3. 第5行写一个循环,连续取30个页面,6-14行为每次循环体,将当前页面的图片地址全部取出来;
第12行是重点,究竟是个什么意思,把http://cn.bing.com/HPImageArchive.aspx?format=js&idx=1&n=1&nc=1361089515117&FORM=HYLH1 输入浏览器看看就知道了;
{"images":[{"startdate":"20150908","fullstartdate":"201509081600","enddate":"20150909","url":"http://s.cn.bing.net/az/hprichbg/rb/CoalTitVideo_ZH-CN7865623960_1920x1080.jpg","urlbase":"/az/hprichbg/rb/CoalTitVideo_ZH-CN7865623960","copyright":"大不列颠,苏格兰,煤山雀栖息在地衣覆盖的树枝上 (© NHPA/SuperStock)","copyrightlink":"http://www.bing.com/search?q=%E7%85%A4%E5%B1%B1%E9%9B%80&FORM=hpcapt&mkt=zh-cn","wp":false,"hsh":"e0422c438eb020d7102d69b4405d1cc3","drk":1,"top":1,"bot":1,"hs":[{"desc":"我当然是嘴甜小巧惹人疼的小公举啦,","link":"http://www.bing.com/images/search?q=%E7%85%A4%E5%B1%B1%E9%9B%80&FORM=hphot1&mkt=zh-cn","query":"不然别人怎么会叫我贝儿?","locx":23,"locy":35},{"desc":"pseet~pseet~今天的早饭真好吃,","link":"http://www.bing.com/search?q=%E7%85%A4%E5%B1%B1%E9%9B%80+%E5%8F%AB%E5%A3%B0&FORM=hphot2&mkt=zh-cn","query":"喂喂喂,你不许靠近,tsee see see see see!","locx":37,"locy":37},{"desc":"既然是小公举,","link":"http://www.bing.com/images/search?q=%E9%B8%9F%E7%AC%BC&FORM=hphot3&mkt=zh-cn","query":"当然要住在童话般的屋子里呀。","locx":66,"locy":42}],"msg":[{"title":"今日图片故事","link":"http://www.bing.com/search?q=%E7%85%A4%E5%B1%B1%E9%9B%80&FORM=pgbar1&mkt=zh-cn","text":"煤山雀"}]}],"tooltips":{"loading":"正在加载...","previous":"上一页","next":"下一页","walle":"此图片不能下载用作壁纸。","walls":"下载今日美图。仅限用作桌面壁纸。"}}
大体可以猜到,此句的作用是取“url”: 和 “urlbase” 之间的部分。
4.第15行,写一个内部for循环,将当前页面所包含的所有图片都取出来(有时候一个页面可能包含多张图片,当然也有可能为空);
第16行,将txt截取出xxx.jpg作为保存文件名。
第19行真正取回图片。
Python还是比较简洁的,易读性也好,唯一有点绕的是正则表达式部分;用的多了也就好了吧。
第一个爬虫脚本执行成功!
标签:
原文地址:http://www.cnblogs.com/javajava/p/4796863.html