Python爬虫入门——爬取贴吧图片

原创 2016年06月01日 00:40:04

最近忽然想听一首老歌,“I believe” 于是到网上去搜,把几乎所有的版本的MV都看了一遍(也是够无聊的),最喜欢的还是最初版的《我的野蛮女友》电影主题曲的哪个版本,想起女神全智贤,心血来潮,于是就想到了来一波全MM的美照,哪里有皂片呢?自然是百度贴吧了。

放上链接-————

http://tieba.baidu.com/p/3466236659

爬取贴吧图片是非常简单的一件事,我们要做的是这么几步:

1、获取要爬取的网址

2、获取此网址的HTML源码

3、用正则表达式找出源码中的图片地址

4、下载图片,完活儿!

就是这么简单。

下面来看代码:

一、预备:

首先要引入相应的python模块。

import re
//正则表达式模块,用来匹配图片地址
import urllib
//用来获取HTML源码
import sys  
reload(sys) 
sys.setdefaultencoding('utf8')
//解决文字编码的问题,事实上我的电脑没有这段也OK


二、获取网址源码这一部分十分简单,就是调用urllib模块的函数,直接上代码

def getHtml(url):
    page = urllib.urlopen(url)
    html = page.read()
    return html

返回的html自然是url页面的源码,如图



三、匹配源码中的图片地址 并下载之

源码到手之后,要做的就是寻找其中对我们有用的信息啦——就是全MM的图片。我们可以在chrome浏览器中按F12打开源码,或者是邮件图片,点检查,像这样



我们不难看到,我们关心的图片,在HTML中有着相当规范的格式(当然,全MM专贴中基本都是她的图片啦,这让我们的工作简单了好多好多!),就是

src=http://img.***********.jpg

我们用正则表达式,可以轻松完成。(这里不懂得小伙伴需要自己补充一下正则表达式的知识哦)

设置正则:

reg = r'src="(http://img.*?\.jpg)"'

备注:

1、    .*? 三个符号可以匹配任意多个任意符号

2、   \.  是将 ‘.’ 转义,代表的就是HTML中的  .

3、 ()表示 我们只取括号中的部分,省略之外的。


下面继续上代码:

def getImg(html, x):
//imlist得到的是源码中符合正则reg的图片地址构成的列表
    reg = r'src="(http://img.*?\.jpg)"'
    imgre = re.compile(reg)
    imList = re.findall(reg, html)
//打印列表有助于我们在运行中监控他
    print(imList)
    for i in imList:
        print(i)
        print x
        urllib.urlretrieve(i, '%s.jpg' % x)//下载地址为i的图片,并用x.jpg命名。
        x += 1
    return x
这里要说明一下,x变量是我们在下载图片时的计数变量,同时也是命名变量,因为一个帖子是有很多个页面的,因此我们需要处理的HTML源码也有很多个。

将x返回,是为了下次再调用GetImg()的时候,x可以接着上一次的继续累加。


四、多个页面

最后,我们来处理一下多个页面的问题。

非常简单,看图


只需要在网址后面加上?pn=页数 就好了

url = "http://tieba.baidu.com/p/3466236659?pn="
for k in range(1, 28):
    ul = url+str(k)
    print ul
    html = getHtml(ul)
    # print html
    x = getImg(html, x)


好啦,完成!

下面贴上完整代码:

import re
import urllib
import sys  
reload(sys) 
sys.setdefaultencoding('utf8')
def getHtml(url):
    page = urllib.urlopen(url)
    html = page.read()
    return html

def getImg(html, x):
    reg = r'src="(http://img.*?\.jpg)"'
    imgre = re.compile(reg)
    imList = re.findall(reg, html)

    print(imList)
    for i in imList:
        print(i)
        print x
        urllib.urlretrieve(i, '%s.jpg' % x)
        x += 1
    return x


x = 1
url = "http://tieba.baidu.com/p/3466236659?pn="
for k in range(1, 28):
    ul = url+str(k)
    print ul
    html = getHtml(ul)
    # print html
    x = getImg(html, x)


下面是我爬到的成果:



希望对大家有帮助。


晚安,明天还有一天的课,估计起不来了。。。。。。。

PS:我是不会翘课的!


————————————————————————————————————————————————————————————————

昨天第一次发blog,格式和图片都没有弄好,多多包涵啦




版权声明:本文为博主原创文章,未经博主允许不得转载。

用Python 爬虫爬取贴吧图片

之前一直在看机器学习,遇到了一些需要爬取数据的内容,于是稍微看了看Python爬虫,在此适当做一个记录。我也没有深入研究爬虫,大部分均是参考了网上的资源。先推荐两个Python爬虫的教程,网址分别是h...
  • u012705410
  • u012705410
  • 2015年08月15日 20:34
  • 6261

Python爬取贴吧多页图片

Python爬取贴吧图片都只能爬取第一页的,加了循环也不行,现在可以了。 #coding:utf-8 import urllib import urllib2 import re import os...
  • hurmishine
  • hurmishine
  • 2016年08月20日 14:08
  • 1233

爬取贴吧上的图片到本地

获取整个页面数据#coding=utf-8 import urllibdef getHtml(url): page = urllib.urlopen(url) html = page....
  • duxu24
  • duxu24
  • 2016年07月11日 13:09
  • 2314

python网络爬虫抓取图片

利用python抓取网络图片的步骤: 1.根据给定的网址获取网页源代码 2.利用正则表达式把源代码中的图片地址过滤出来 3.根据过滤出来的图片地址下载网络图片 import re import...
  • longshengguoji
  • longshengguoji
  • 2013年08月13日 13:21
  • 29611

Python爬虫——爬取网站的图片

爬虫这东西最早出现在我大学计算机网络的课程上面,我们当时的老师人很好,期末不笔试,他说这东西笔试没什么用,对于一个年纪比较大的老师来讲,能提出这种方式,实在难得。当时在考虑做一个与网络有关的东西好,第...
  • iaiti
  • iaiti
  • 2015年11月19日 15:04
  • 23438

Python爬虫__爬取贴吧图片和文本

1. 爬取图片1.1 前言这是一个李清照吧http://tieba.baidu.com/p/3825973883 里面有楼主上传的书法作品,每一楼的格式大致是这样,文本加上书法图片: ...
  • qq_24421591
  • qq_24421591
  • 2016年09月21日 15:50
  • 2721

一个小的爬虫实例——爬取百度贴吧图片

下载百度贴吧的一个页面的图片,代码如下: http://tieba.baidu.com/p/4109803644#!/usr/bin/python #coding:utf8import re imp...
  • u011402596
  • u011402596
  • 2015年10月25日 16:34
  • 776

Python简单爬取图片实例

零基础详细讲解python爬取网站图片下载到本地的简单实例
  • Cloudox_
  • Cloudox_
  • 2016年12月05日 15:38
  • 10173

Python爬虫之——爬取妹子图片

首先声明,本博文为我原创,但是我在看了 崔庆才 博主的文章之后加以自己的实际处理的所得,感谢 崔庆才 博主,写的爬虫文章都好,博主文章地址:http://cuiqingcai.com/3179.htm...
  • baidu_35085676
  • baidu_35085676
  • 2017年04月03日 16:19
  • 14383

[python学习] 简单爬取图片网站图库中图片

最近老师让学习Python与维基百科相关的知识,无聊之中用Python简单做了个爬取“游讯网图库”中的图片,因为每次点击下一张感觉非常浪费时间又繁琐。主要分享的是如何爬取HTML的知识和Python如...
  • cq1982
  • cq1982
  • 2015年03月27日 00:24
  • 16267
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Python爬虫入门——爬取贴吧图片
举报原因:
原因补充:

(最多只允许输入30个字)