|
发表于 2021-7-22 21:45:53
|
显示全部楼层
时间守护 发表于 2021-6-30 10:53
Traceback (most recent call last):
File "C:/Users/Administrator/Desktop/网页2.py", line 1, in
...
现在是2021年7月23日,由于网站变化,我在楼主的代码基础上更改代码后可以重新下载了! 代码如下
- import requests
- import urllib.request
- import os
- from bs4 import BeautifulSoup as bs # 由于网站变化,需要导入BeauifulSoup来下载图片
- import re # 由于网站变化,需要导入're'正则表达式来下载图片
- n=int(input('起始写真编号:'))
- amount = int(input('希望获取多少套写真?\n:'))
- amount -= 1 # pyhon众所周知,从‘0’开始
- location = "D://pics"
- if not os.path.exists(location):
- os.mkdir(location) # 在D盘新建文件夹pics
-
- url_0 = "http://www.gzhuibei.com/html/" # 写真集网址前半部分
- url_01 = "http://www.gzhuibei.com" # 写真集网址具体图片地址前半部分
- while amount>=0:
- url0 = url_0 + str(n+amount) # 具体写真集编号网址
-
- for num in range(10): # 一个写真集里有很多图片,这里设置最多爬10张
- if num == 0: # 根据网址规律,得出每一套写真第一张照片网址
- url = url0 + ".html"
- else: # 根据网址规律,得出第2张后的每张写真图网址
- url = url0 + "_" + str(num+1) + ".html"
-
- try: # 如果下载超出该套写真的图片数则提示并停止该套写真下载
- resp = urllib.request.urlopen(url)
- except :
- print("这套写真只有这么多图片啦!")
- break
-
- html = resp.read().decode("utf-8")
- soup = bs(html,"html.parser")
- list1 = [] # 用于提取每张图片在服务器上的具体地址
- for each in soup.find_all('img'):
- list1.append(each["src"])
-
- root = location+"//"+ url.split('/')[-2]+"//" #保存写真路径
- path = root + str(n+amount) + "_" + str(num+1)+".jpg" #写真集内图片用序号命名
-
- try:
- if not os.path.exists(root):
- os.mkdir(root) #没有文件夹则创建新文件夹
- if not os.path.exists(path):
- url_02 = url_01 + list1[1] #每张照片的具体网址
- r = requests.get(url_02) #爬取网页
-
- if r.status_code == 200: #判断图片是否存在,存在则保存
- with open(path, 'wb') as f:
- f.write(r.content)
- f.close()
- print("file saved successfully!")
- else: #不存在则跳过
- pass
- else:
- print("file already exists!")
- except:
- print("failed!")
-
- amount-=1
复制代码 |
|