python实现爬取百度贴吧图片

    xiaoxiao2021-03-25  108

    本文最初参考:

    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张图片。

    转载请注明原文地址: https://ju.6miu.com/read-22521.html

    最新回复(0)