爬取百度贴吧图片

本次文章内容是爬取贴吧图片,希望对大家有所帮助

使用环境:我用的是python2.7.9
在Python 3以后的版本中,urllib2这个模块已经不单独存在(也就是说当你import urllib2时,系统提示你没这个模块),urllib2被合并到了urllib中。

  • urllib2.urlopen()变成了urllib.request.urlopen()
  • urllib2.Request()变成了urllib.request.Request()

如果有的用的是python3以后的版本,记得改一下哦

一、 获取要爬取的贴吧的网址

打开浏览器,找到我们想爬取的贴吧,获取其网址
在这里插入图片描述

二、 获取页面源代码

利用下面函数来获取源代码

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

三、匹配的图片地址

首先,我们打开第一步的网址,右击审查元素,在审查元素中找到图片的地址,观察其地址的格式
在这里插入图片描述

这里,我匹配的是bpic等于的那个网址,从这我们可以看到图片的地址是以.jpg结尾,利用正则进行匹配

  reg = r'bpic="(.*?\.jpg).*?pic'

这里括号所括住的部分,正是我们所需要的地址

  • (.*?)是进行最小匹配,是非贪婪模式
  • \ 是转义字符

四、保存图片至本地

存入本地

urllib.urlretrieve(imgurl, '%s.jpg' % x)

或者可以存至自己新建的文件夹

f = open('tupian/'+str(x)+'.jpg', 'wb')
f.write((urllib2.urlopen(imgurl)).read())
f.close()

五、完整代码呈现

代码中有中文时,完整添加的是 # - * - coding:utf-8 - * -

#coding:utf8只是简写

此程序中,共用到三个库:

  • import re
  • import urllib
  • import urllib2
#代码中有中文时,需加#coding:utf8
# coding:utf8

#导入需要的模块,这里需要re模块匹配正则,urllib模块获取网页源码,urllib2模块将获取的图片存入文件夹中
import re
import urllib
import urllib2

#获取网页源代码的函数
def gethtml(url):
    page = urllib.urlopen(url)
    html = page.read()
    return html

#获取图片的函数
def getimg(html):
    #利用正则获取图片的网址
    reg = r'bpic="(.*?\.jpg).*?pic'
    imgre = re.compile(reg)
    imglist = re.findall(imgre,html)
    #此变量x用于下载图片时为图片命名
    x=0
    for imgurl in imglist:
        #这个print可以用于检验匹配出的图片地址
        print imgurl
        #第一种:下载图片,保存到本地
        #urllib.urlretrieve(imgurl, '%s.jpg' % x)
        #第二种:将下载好的文件存入一个文件夹中.(wb存入时会删除此文件夹原有的图片)
        f = open('tupian/'+str(x)+'.jpg', 'wb')
        f.write((urllib2.urlopen(imgurl)).read())
        f.close()
        x+=1
html = gethtml("http://tieba.baidu.com/f?ie=utf-8&kw=风景")
getimg(html)

结果呈现
在这里插入图片描述


以上就是爬取贴吧图片的全部过程

猜你喜欢

转载自blog.csdn.net/m0_43445668/article/details/83153946