python实现爬取百度贴吧图片

本文介绍了一种使用Python爬取百度贴吧中多页图片的方法。通过解析网页内容并利用正则表达式抓取图片链接,实现了从指定帖子的第一页到最后一页的所有图片下载。该教程详细展示了代码实现过程及运行效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文最初参考:

http://www.cnblogs.com/fnng/p/3576154.html#!comments

有一个缺点就是只能爬取网页的第一页的图片,而整个帖子有70多页的内容图片。

#coding=utf-8
import urllib
import re

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

def getImg(html):
    reg = r'src="(.+?\.jpg)" pic_ext'
    imgre = re.compile(reg)
    imglist = re.findall(imgre,html)
    x = 0
    for imgurl in imglist:
        urllib.urlretrieve(imgurl,'%s.jpg' % x)
        x+=1


html = getHtml("http://tieba.baidu.com/p/2460150866")

print getImg(html)

所以本人对源代码进行了修改:可以爬取整个贴吧有70多页的图片,(爬取百度贴吧,不需要伪装成浏览器,比较方便)

#coding=utf-8
import urllib
import re

model_url = 'http://tieba.baidu.com/p/2460150866?pn='

def getHtml(url):
    page = urllib.urlopen(url)
    html = page.read()
    return html
	
def getPageNum(html):
    reg = r'尾页'
    imgre = re.compile(reg)
    html_str = re.findall(imgre,html)
    print html_str
    num=int(html_str[0])
    print num
    return num

def getImg(html,i):
    reg = r'src="(.+?\.jpg)" pic_ext'
    imgre = re.compile(reg)
    imglist = re.findall(imgre,html)
    x=1
    for imgurl in imglist:
        urllib.urlretrieve(imgurl,'page_%s_the_%s.jpg' %(i,x))
        x+=1

html = getHtml("http://tieba.baidu.com/p/2460150866")
getImg(html,1)
print('The 1 page\'s pictures are downloaded')
num = getPageNum(html)
print getPageNum(html) 
print('The total page is %d'  % num)
if num>1:
  for i in range(44,num+1):
    real_url = model_url+str(i)
    print real_url
    htmls=getHtml(real_url)
    getImg(htmls,i)
    print('The %d page\'s pictures are downloaded' % i)


下图为Python idle执行过程。



从蓝色框看出page_72_the_5.jpg表示爬取的第72页第5张图片。

从红色框看出爬取此百度贴吧共2515张图片。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值