2.贴吧图片大量页面爬虫.py

'''
按照网页是11位数字编号,根据末尾三位数累加,直到有用的图片下载下来
功能有:1验证文件夹是否存在,2通过1+叠加另存文件名称,3自动叠加文件url地址
创建者: caz
日期:20180814
出现问题描述: 一段时间后弹出socket.timeout: timed out出错
第二次测试居然全部通过了 ,可能跟网速有关系
20180815第三次测试全部通过

'''


import urllib.request
import re
import os
import time
import requests
url_re=re.compile(r'src="(https://imgsa.baidu.com.+?.jpg)"') #利用正则筛选出片
def url_open(url):
	html=urllib.request.urlopen(url).read() #打开网址并且读取所有的数据
	return html    #返回数据
def get_img_addrs(html):
	img_addrs=url_re.findall(html)   #筛选出需要的图片
	print(img_addrs) 
	img_addrs=list(set(img_addrs))   #把地址转换成数组并转换成集合
	return img_addrs
        
def download_huaban_img(): 
        b=253
        x=0
        foot='图2'  #在子目录下创建一个花盘的文件夹
        if (os.path.exists(foot)):  # 假如文件夹存在的话
                pass
        else:
                os.mkdir(foot)  #如果不存在则函数创建目录创建一级目录
        os.chdir(foot)     #改变当前工作目录到指定的路径
        while(b<600):      
                url='http://tieba.baidu.com/p/8760713'+str(b)  #地址解析为
                print(url)
                r = requests.get(url, timeout=5)  #获取所有数据,如果5s解析不出退出
                code = r.status_code      #试探状态是否正常
                if code == 200:         #代码200时退出
                        print ("OK 网站访问正常")
                b+=1           #b叠加
                html=url_open(url)  #打开地址
                try:
                        img_addrs=get_img_addrs(html.decode('utf-8')) #获取图片地址的集合
                except:
                        pass

                
                for imgurl in img_addrs:   #所有网址解析成地址
                        print (imgurl)
                        time.sleep(0.8)
                        urllib.request.urlretrieve(imgurl,"%s.jpg" %x) #保存图片
                        x+=1         
download_huaban_img()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值