python爬虫入门教程之糗百图片爬虫代码分享


Posted in Python onSeptember 02, 2014

学习python少不了写爬虫,不仅能以点带面地学习、练习使用python,爬虫本身也是有用且有趣的,大量重复性的下载、统计工作完全可以写一个爬虫程序完成。

用python写爬虫需要python的基础知识、涉及网络的几个模块、正则表达式、文件操作等知识。昨天在网上学习了一下,写了一个爬虫自动下载「糗事百科」里面的图片。源代码如下:

# -*- coding: utf-8 -*- 

# 上面那句让代码里支持中文
#---------------------------------------  

#   程序:糗百图片爬虫  

#   版本:0.1  

#   作者:赵伟  

#   日期:2013-07-25  

#   语言:Python 2.7  

#   说明:能设置下载的页数。没有做更多抽象和交互方面的优化。  

#---------------------------------------
import urllib2

import urllib

import re
#正则表达式,用来抓取图片的地址

pat = re.compile('<div class="thumb">\\n<img src=\"(ht.*?)\".*?>')
#用来合成网页的URL

nexturl1 = "http://m.qiushibaike.com/imgrank/page/"

nexturl2 = "?s=4582487&slow"
#页数计数

count = 1
#设置抓取的页数

while count < 3:
    print "Page " + str(count) + "\n"

    myurl = nexturl1 + str(count) + nexturl2

    myres = urllib2.urlopen(myurl)#抓取网页

    mypage = myres.read()#读取网页内容

    ucpage = mypage.decode("utf-8") #转码
    mat = pat.findall(ucpage)#用正则表达式抓取图片地址

        

    count += 1;

    

    if len(mat):

        for item in mat:

            print "url: " + item + "\n"

            fnp = re.compile('/(\w+\.\w+)$')#下面三行分离出图片文件的名称

            fnr = fnp.findall(item)

            fname = fnr[0]

            urllib.urlretrieve(item, fname)#下载图片

      

    else:

        print "no data"

使用方法:新建一个practice文件夹,将源代码保存为qb.py文件,并放在practice文件夹中,在命令行里执行python qb.py,即开始下载图片。可以修改源代码里面的while语句设置下载的页数。

Python 相关文章推荐
Python文件操作基本流程代码实例
Dec 11 Python
Flask框架各种常见装饰器示例
Jul 17 Python
selenium+python 对输入框的输入处理方法
Oct 11 Python
python使用Paramiko模块实现远程文件拷贝
Apr 30 Python
twilio python自动拨打电话,播放自定义mp3音频的方法
Aug 08 Python
Python多线程爬取豆瓣影评API接口
Oct 22 Python
通过实例解析Python调用json模块
Dec 11 Python
关于windows下Tensorflow和pytorch安装教程
Feb 04 Python
pytorch 实现在一个优化器中设置多个网络参数的例子
Feb 20 Python
Python读写操作csv和excle文件代码实例
Mar 16 Python
Python3实现建造者模式的示例代码
Jun 28 Python
Flask中sqlalchemy模块的实例用法
Aug 02 Python
python批量同步web服务器代码核心程序
Sep 01 #Python
寻找网站后台地址的python脚本
Sep 01 #Python
python批量修改文件名的实现代码
Sep 01 #Python
python中List的sort方法指南
Sep 01 #Python
Python抓取京东图书评论数据
Aug 31 #Python
Python深入学习之内存管理
Aug 31 #Python
Python深入学习之装饰器
Aug 31 #Python
You might like
hessian 在PHP中的使用介绍
2010/12/13 PHP
PHP Undefined index报错的修复方法
2011/07/17 PHP
php array_key_exists() 与 isset() 的区别
2016/10/24 PHP
php判断/计算闰年的方法小结【三种方法】
2019/07/06 PHP
jquery创建一个ajax关键词数据搜索实现思路
2013/02/26 Javascript
js事件冒泡实例分享(已测试)
2013/04/23 Javascript
HTML长文本截取含有HTML代码同样适用的两种方法
2013/07/31 Javascript
javascript中通过arguments参数伪装方法重载
2014/10/08 Javascript
javascript经典特效分享 手风琴、轮播图、图片滑动
2016/09/14 Javascript
javascript ASCII和Hex互转的实现方法
2016/12/27 Javascript
JavaScript中无法通过div.style.left获取值的解决方法
2017/02/19 Javascript
原生JS实现圣旨卷轴展开效果
2017/03/06 Javascript
vuejs绑定class和style样式
2017/04/11 Javascript
angular.js指令中transclude选项及ng-transclude指令详解
2017/05/24 Javascript
Angular2入门教程之模块和组件详解
2017/05/28 Javascript
Easyui Datagrid自定义按钮列(最后面的操作列)
2017/07/13 Javascript
vue中使用refs定位dom出现undefined的解决方法
2017/12/21 Javascript
通过jquery获取上传文件名称、类型和大小的实现代码
2018/04/19 jQuery
bootstrap-table formatter 使用vue组件的方法
2019/05/09 Javascript
vue  elementUI 表单嵌套验证的实例代码
2019/11/06 Javascript
python计算书页码的统计数字问题实例
2014/09/26 Python
python编程之requests在网络请求中添加cookies参数方法详解
2017/10/25 Python
python的dataframe转换为多维矩阵的方法
2018/04/11 Python
Python GUI编程完整示例
2019/04/04 Python
在python image 中安装中文字体的实现方法
2019/08/22 Python
python如何支持并发方法详解
2020/07/25 Python
在对linux系统分区进行格式化时需要对磁盘簇(或i节点密度)的大小进行选择,请说明选择的原则
2012/01/13 面试题
生物科学专业个人求职信范文
2013/12/07 职场文书
机械工程学院大学生求职信
2014/05/25 职场文书
安全横幅标语
2014/06/09 职场文书
公司优秀员工获奖感言
2014/08/14 职场文书
商业门面租房协议书
2014/11/25 职场文书
遗嘱继承权公证书
2015/01/26 职场文书
升职自荐信范文
2015/03/27 职场文书
2015社区个人工作总结范文
2015/05/13 职场文书
2016三八妇女节校园广播稿
2015/12/17 职场文书