'''
按照网页是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()
2.贴吧图片大量页面爬虫.py
最新推荐文章于 2024-09-28 17:40:14 发布