今天的我更强了 发表于 2020-7-13 18:26:37

爬取之后的图片显示不支持此文件格式

import requests
import bs4
import os
import re
def open_url(url):
    headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'}
    response=requests.get(url,headers=headers)
    return response
def get_url(url):
    resp=targ=open_url(url)
    soup=bs4.BeautifulSoup(resp.text,'html.parser')
    targets=soup.find_all("li",class_="galleryli")
    uu=[]
    for each in targets:
      uu.append('https://www.nvshens.net'+each.div.a['href'])
    return uu
      
def get_pages(response):
    soup=bs4.BeautifulSoup(response.text,'html.parser')
    page1=soup.find_all('div',id="dinfo")
    # print(page1)
    for each in page1:
      pa=int(each.span.text[:-3])
      if pa%3:
            pag=pa//3+1
      else:
            pag=pa//3
    print(pag)
    return pag
def down_pages(url):
    req=open_url(url)
    # print(req.text)
    # soup=bs4.BeautifulSoup(req.text,'html.parser')
    # page1=soup.find_all('ul',id="hgallery")
    # print(page.text)
    p=r"img src='(.+?\.jpg)' alt="
    tar=re.findall(p,req.text)
    return tar
      
   
   


def main():
    os.mkdir('ll')
    os.chdir('ll')
    u=input('请输入网址:')
    tt=get_url(u)
    list1=[]
    for url in tt:
      res=open_url(url)
      pages=get_pages(res)
      for i in range(1,pages+1):
            ur=url+r'/'+str(i)+'.html'
            tar=down_pages(ur)
            for each in tar:
                list1.append(each)
    i=0
    print(list1)
    for n in list1:
      i+=1
      headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'}
      nn=requests.get(n,headers=headers,allow_redirects=False)
      with open(str(i)+'.jpg','wb') as f:
            f.write(nn.content)
            
   
if __name__=='__main__':
    main()
想试着爬取女生网的图片,但是下载之后有一部分可以打开 有一部分打不开,结果如图所示,这是为什么?

zltzlt 发表于 2020-7-13 18:27:54

可能是文件被损坏或者文件扩展名有误。

Twilight6 发表于 2020-7-13 18:28:54

你的输入链接发上来,测试下

今天的我更强了 发表于 2020-7-13 18:43:03

Twilight6 发表于 2020-7-13 18:28
你的输入链接发上来,测试下

https://www.nvshens.net/gallery/qingxin
运行到后面还会报错

今天的我更强了 发表于 2020-7-13 18:43:55

zltzlt 发表于 2020-7-13 18:27
可能是文件被损坏或者文件扩展名有误。

扩展名是没有问题的 为什么会文件损坏呢?

永恒的蓝色梦想 发表于 2020-7-13 18:49:17

zltzlt 发表于 2020-7-13 18:27
可能是文件被损坏或者文件扩展名有误。

离开这个问题{:10_277:}这不是我们该看的

zltzlt 发表于 2020-7-13 18:49:55

永恒的蓝色梦想 发表于 2020-7-13 18:49
离开这个问题这不是我们该看的

{:10_256:}

今天的我更强了 发表于 2020-7-13 19:00:36

永恒的蓝色梦想 发表于 2020-7-13 18:49
离开这个问题这不是我们该看的

纯粹练习 下载完就删 相信我{:10_260:}

Twilight6 发表于 2020-7-13 19:01:34

今天的我更强了 发表于 2020-7-13 18:43
https://www.nvshens.net/gallery/qingxin
运行到后面还会报错



调试大致看了下你爬到的链接没什么毛病,不清楚到底是什么情况

今天的我更强了 发表于 2020-7-13 19:03:21

Twilight6 发表于 2020-7-13 19:01
调试大致看了下你爬到的链接没什么毛病,不清楚到底是什么情况

也就是说 代码应该是没什么为题吗?

Twilight6 发表于 2020-7-13 19:05:16

今天的我更强了 发表于 2020-7-13 19:03
也就是说 代码应该是没什么为题吗?



嗯,代码应该没毛病


hrp 发表于 2020-7-13 19:29:38

首先jpg的后缀名是你给加上去的,实际上你爬到的图片二进制数据不一定都是jpg格式的数据流(也许是网站的奇怪反爬操作使你访问图片却收到了非图片数据,又或者是网站返回了一些混淆的数据等等,都有可能),所以就算加了jpg后缀它也不是图片,系统显示不支持此格式图片就说得通了

liuzhengyuan 发表于 2020-7-13 21:07:57

万一是 .png 呢?

今天的我更强了 发表于 2020-7-13 21:11:57

liuzhengyuan 发表于 2020-7-13 21:07
万一是 .png 呢?

我把所有的地址都打印出来了 是jpg的{:10_266:}

今天的我更强了 发表于 2020-7-13 21:12:32

hrp 发表于 2020-7-13 19:29
首先jpg的后缀名是你给加上去的,实际上你爬到的图片二进制数据不一定都是jpg格式的数据流(也许是网站的奇 ...

好的 谢谢

wwd198 发表于 2022-3-28 15:27:03

所以如何解决?
页: [1]
查看完整版本: 爬取之后的图片显示不支持此文件格式