抄袭一个爬虫却只能得到文件夹而没有文件,问题出在哪里?
import reimport os
import requests
import easygui as g
import time
def get_html(url):
header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3314.0 Safari/537.36 SE 2.X MetaSr 1.0',
'Referer':'https://www.mzitu.com/japan/'}
html = requests.get(url,headers=header)
return html
def get_img(html):
html=html.text
img_re="https:\/\/imgpc\.iimzt\.com\/(?:.+\/)+.+(?:\.jpg)"
imgs=re.findall(img_re,html)
return imgs
def save_img(imgs,page):
for img_url in imgs:
res = get_html(img_url)
img = res.content
name = page+img_rul.split("/")[-1]
print(img_url)
with open(name, "wb") as f:
f.write(img)
def download_mm():
great = g.diropenbox()
os.chdir(great)
i=int(input("请输入开始页码(建议为1):"))
n=int(input("请输入结束页码:"))
while i<n:
home_url="https://www.mzitu.com/page/"+str(i)+"/"
i+=1
model_html=get_html(home_url).text
model=re.compile("https:\/\/.{13}\/\d{5,6
all_model= model.findall(model_html)
all_model=list(set(all_model))
for each in all_model:
img_url=get_html(each).text
dirs=re.search(r'([\u4e00-\u9fa5·]{2,16})',img_url).group()
print('开始下载%s模特的图片' % dirs)
if os.path.exists(dirs):
pass
else:
os.mkdir(dirs)
os.chdir(dirs)
try:
nums=re.findall("https:\/\/.{13}\/\d{5,6}\/\d{2}",img_url)
page_num=int(nums[-1].split("/")[-1])
print('该模特共有%s张图片'% page_num)
for mm in range(page_num):
mm_url=each+"/"+str(mm+1)
print(mm_url)
mm_html=get_html(mm_url)
imgs=get_img(mm_html)
page=str(i-1)+"_"
save_img(imgs,page)
time.sleep(1)
except:
pass
os.chdir(os.pardir)
if __name__=="__main__":
download_mm()
def download_mm():
great = g.diropenbox()
os.chdir(great)
i=int(input("请输入开始页码(建议为1):"))
n=int(input("请输入结束页码:"))
while i<n:
home_url="https://www.mzitu.com/page/"+str(i)+"/"
i+=1
model_html=get_html(home_url).text
model=re.compile("https:\/\/.{13}\/\d{5,6}")#这里补充完整
all_model= model.findall(model_html)
all_model=list(set(all_model)) 私はり 发表于 2021-3-21 20:23
不对
我看了下虽然在运行
确实没有图片 网站不能访问了吧 def save_img(imgs,page):
for img_url in imgs:
res = get_html(img_url)
img = res.content
name = page+img_rul.split("/")[-1] # img_rul是个啥?
print(img_url)
with open(name, "wb") as f:
f.write(img) 笨鸟学飞 发表于 2021-3-22 10:52
img_url变量遍历imgs变量 私はり 发表于 2021-3-21 20:25
不对
我看了下虽然在运行
确实没有图片
能帮助找下这是什么原因导致滴吗? 原帖是可以下载图片滴
import re
import os
import requests
import easygui as g
import time
def get_html(url):
header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3314.0 Safari/537.36 SE 2.X MetaSr 1.0',
'Referer':'https://www.mzitu.com/japan/'}
html=requests.get(url,headers=header)
return html
def get_img(html):
html=html.text
img_re="https:\/\/imgpc\.iimzt\.com\/(?:.+\/)+.+(?:\.jpg)" #详情页查找jpg图片正则表达式
imgs=re.findall(img_re,html)
return imgs
def save_img(imgs,page):
for img_url in imgs:
res = get_html(img_url)
img = res.content
name=page+img_url.split("/")[-1] #加个page,知道是第几页的模特,方便下次继续,嘿嘿嘿
print(img_url)
with open(name, "wb") as f:
f.write(img)
def download_mm():
great=g.diropenbox()
os.chdir(great)
i=int(input("请输入开始页码(建议为1):"))
n=int(input("请输入结束页码:"))
while i<n:
home_url="https://www.mzitu.com/page/"+str(i)+"/"
i+=1
model_html=get_html(home_url).text
model=re.compile("https:\/\/.{13}\/\d{5,6}")# 获取模特编号正则表达式
all_model= model.findall(model_html)
all_model=list(set(all_model)) #去重
for each in all_model:
img_url=get_html(each).text
dirs=re.search(r'([\u4e00-\u9fa5·]{2,16})',img_url).group()#"获取模特名字正则表达式"
print('开始下载%s模特的图片' % dirs)
if os.path.exists(dirs):
pass
else:
os.mkdir(dirs)#给每个模特建个文件夹
os.chdir(dirs)
try:
nums=re.findall("https:\/\/.{13}\/\d{5,6}\/\d{2}",img_url)#获得页码正则表达式
page_num=int(nums[-1].split("/")[-1])
print('该模特共有%s张图片'% page_num)
for mm in range(page_num):
mm_url=each+"/"+str(mm+1)
print(mm_url)
mm_html=get_html(mm_url)
imgs=get_img(mm_html)
page=str(i-1)+"_"
save_img(imgs,page)
time.sleep(1)# 下载速控制一下 不要太快
except:
pass
os.chdir(os.pardir)
if __name__=="__main__":
download_mm()
dlzhr456 发表于 2021-3-22 18:50
能帮助找下这是什么原因导致滴吗?
我是个小白
哈哈
不得行 本帖最后由 hrp 于 2021-3-22 20:23 编辑
hrp 发表于 2021-3-21 20:36
网站不能访问了吧 hrp 发表于 2021-3-22 20:00
难道就没人用浏览器去试试网站还能不能打开?还在研究为什么没下载到东西?
问题是可以打开啊{:10_245:} Daniel_Zhang 发表于 2021-3-22 20:16
问题是可以打开啊
我怎么打不开了 hrp 发表于 2021-3-22 20:18
我怎么打不开了
不知道啊{:10_245:}
Daniel_Zhang 发表于 2021-3-22 20:22
不知道啊
{:10_269:}{:10_269:}草率了 hrp 发表于 2021-3-22 20:23
草率了
麻烦大神提供点实质性的帮助新人不易 def save_img(imgs,page):
for img_url in imgs:
res = get_html(img_url)
img = res.content
name=page+img_url.split("/")[-1] #加个page,知道是第几页的模特,方便下次继续,嘿嘿嘿
print(img_url)
with open(name, "wb") as f:
f.write(img)
一直搞不懂这里面的page变量怎么来滴??? 本帖最后由 YunGuo 于 2021-3-23 00:24 编辑
你发在8楼的代码我用pycharm运行了,也debug了下,并没有问题,可以下载图片。
代码的逻辑是:
1、弹出的窗口选择一个保存图片的路径
2、输入开始和结束页码
3、组合图片列表页url,并用正则获取当前列表页所有图片页url(所有模特),再去重
4、循环获取当前图片页(模特),请求当前图片页,获取图片名(当前模特标题)
5、判断当前模特文件夹是否存在,存在则不执行任何操作,否则创建当前模特文件夹
6、获取当前模特有多少页,循环获取每一页中的图片url,请求图片,保存
7、循环执行3-6步,直到i = n结束运行
save_img函数两个参数,imgs是每一页中的图片url,page是用来命名图片的,当 i (也就是开始页)= 1的时候,
page = '1_'(代码是这一句 str(i - 1) + "_",比如当你获取的模特图片是属于第一页的,那么该模特所有图片名字前缀都是1_),下一页的模特以此类推2_、3_........,
其实你运行一遍就知道page是怎么来的了,如果代码执行有问题,你debug一下看是哪里出了问题,我运行可以成功下载图片。 dlzhr456 发表于 2021-3-22 18:48
img_url变量遍历imgs变量
你那个rul写错了看不出来吗?
img_url,不是img_rul
都提示的这么明显了 YunGuo 发表于 2021-3-23 00:20
你发在8楼的代码我用pycharm运行了,也debug了下,并没有问题,可以下载图片。
代码的逻辑是:
1、弹出的 ...
感谢你给我这么详细的恢复这也正是我真正需要滴谢谢
页:
[1]