python下载文件损坏_Python爬虫,图片下载完后是损坏的,怎么解决?

bVVlQx?w=1503&h=1280

bVVlQz?w=2264&h=1053

coding:utf-8

import requests

from bs4 import BeautifulSoup

import os

import sys

reload(sys)

sys.setdefaultencoding('utf8')

爬取目标

url = 'http://www.mzitu.com/page/'

parser = 'html.parser'

cur_path = os.getcwd() + '/'

设置报头,Http协议

header = {

'User-Agent' : 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Mobile Safari/537.36',

'Accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8' ,

'Accept-Encoding' : 'gzip, deflate' ,

'Accept-Language' : 'zh-CN,zh;q=0.8,en;q=0.6' ,

'Connection' : 'keep-alive' ,

'Host':'www.mzitu.com' ,

'Upgrade-Insecure-Requests': '1',

'Referer': 'http:://http://www.mzitu.com/'

}

爬取的预览页面数量

preview_page_cnt = 2

for cur_page in range(1, int(preview_page_cnt) + 1):

cur_url = url + str(cur_page)

cur_page = requests.get(cur_url, headers=header)

# 解析网页

soup = BeautifulSoup(cur_page.text, parser)

# 图片入口和文字入口取一个即可

preview_link_list = soup.find(id='pins').find_all('a', target='_blank')[1::2]

for link in preview_link_list:

dir_name = link.get_text().strip().replace('?', '')

link = link['href']

soup = BeautifulSoup(requests.get(link).text, parser)

# 获取图片数量

pic_cnt = soup.find('div', class_='pagenavi').find_all('a')[4].get_text()

# 创建目录

pic_path = cur_path + dir_name

if os.path.exists(pic_path):

print('directory exist!')

else:

os.mkdir(pic_path)

os.chdir(pic_path) # 进入目录,开始下载

print('下载' + dir_name + '...')

# 遍历获取每页图片的地址

for pic_index in range(1, int(pic_cnt) + 1):

pic_link = link + '/' + str(pic_index)

cur_page = requests.get(pic_link, headers=header)

soup = BeautifulSoup(cur_page.text, parser)

pic_src = soup.find('div', 'main-image').find('img')['src']

pic_name = pic_src.split('/')[-1]

f = open(pic_name, 'wb')

f.write(requests.get(pic_src, headers=header).content)

f.close()

os.chdir(cur_path) # 完成下载,退出目录

print('下载完成')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值