代码1

#/usr/bin/env python
#coding:utf-8import json
import urllib.request
import threading
#导入需要的JSON ,urllib及threading
#定义一个类
class myThread(threading.Thread):def __init__(self,imgurl,filename):threading.Thread.__init__(self)self.imgurl = imgurlself.filename = filenamedef run(self):print ('downloading: ' + self.imgurl)downfile(self.imgurl,self.filename)
#定义一个下载程序
def downfile(imgurl , filename):img_req = urllib.request.Request(imgurl)opener = urllib.request.build_opener()img_resp = opener.open(img_req)try:out = open(filename,'wb')out.write(img_resp.read())out.flush()out.close()except:print('error')if __name__ == "__main__":surl = 'http://huaban.com/pins/1821121555/?jlb0k0ki'#需要爬取的花瓣网美女图片地址hb = urllib.request.Request(surl)#按XHLHttprequest方式请求hb.add_header('X-Requested-With','XMLHttpRequest' )#模拟win10 chrome 浏览器hb.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0')html = urllib.request.urlopen(hb).read()obj = json.loads( html )#print (obj['pin']['board']['pins'])imgs = obj['pin']['board']['pins']#花瓣网图片需要的网址头preurl = 'http://img.hb.aicdn.com/'for img in imgs :imgurl = preurl + img['file']['key']#print (imgurl)myThread(imgurl,img['file']['key'] + '.jpg').start()

代码2

import urllib.request
import re
import os
import datetime
import easygui# 获取网页
def get_html(url):page = urllib.request.urlopen(url)html = page.read().decode('utf-8')     #需要解码return html# 下载图片
def get_image(path,html):# 获取HTML源码里面的app.page["pins"]部分,主要图片ID位于此部分get_app_page_pins = re.compile(r'app\.page\["pins"\].*?;', re.S)get_str = re.findall(get_app_page_pins, html)[0]pin_id = r'"pin_id":(\d+)'pin_id_re = re.compile(pin_id)# 获取图片ID,保存在列表中id_list = re.findall(pin_id_re,get_str)x = 0for pinId in id_list:# 获取跳转网页网址url_str = r'http://huaban.com/pins/%s/' % pinId# 获取点击图片时弹出网页的源码pinId_source = get_html(url_str)# 解析源码,获取原图片的网址img_url_re = re.compile('main-image.*?src="(.*?)"', re.S)img_url_list = re.findall(img_url_re, pinId_source)try:img_url = 'http:' + img_url_list[0]urllib.request.urlretrieve(img_url, path + '\%s.jpg' % x)except:print("获取图片:%s失败,跳过,获取下一张。" % img_url)continueprint("获取成功!%s" % img_url)x += 1print("保存图片成功!")# 创建文件夹路径
def createPath():while True:print('选择你要保存的路径')path = easygui.diropenbox()filePath = path + "\\" + str(datetime.datetime.now().strftime('%Y-%m-%d %H.%M.%S'))isExists = os.path.exists(filePath)if not isExists:# 创建目录os.makedirs(filePath)print('%s创建成功!' % filePath)breakelse:print('%s已存在重新输入!' % filePath)return filePathif __name__ == '__main__':html = get_html("http://huaban.com/favorite/beauty/")get_image(createPath(), html) #调用创建文件夹方法并返回文件夹路径和传入网址

代码3

#-*- coding:utf-8 -*-
import requests
import re
import json
# 导入 requests  re正则 json'''
login
登录花瓣 获取session
'''
def login():login_url = 'https://huaban.com/auth/'# 登录地址headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0","Accept": "application / json","Content-type": "application/x-www-form-urlencoded; charset=utf-8","Referer": "https://huaban.com/",}# 请求头信息session = requests.session()#sesson 会话login_data = {"email": "zengmumu%40126.com","password": "zmm123","_ref":"frame"}response = session.post(login_url, data=login_data, headers=headers,verify=False)# 登录页面getPic(session,5)# 获取图片,前5页'''
getPic
解析页面中的图片地址
session 会话信息
num     最大是页数
'''
def getPic(session,num):for i in range(1,num+1):response = session.get("https://huaban.com/search/?q=%E5%A5%B3%E7%A5%9E&category=photography&page="+str(i))# 获取页面信息("美女"文字编码后的结果是"%E5%A5%B3%E7%A5%9E" )data = re.search('app\.page\[\"pins\"\] =(.*);\napp.page\[\"page\"\]', response.text, re.M | re.I | re.S)# 提取到当前页面所在的所有图片信息data = json.loads(data.group(1))# 转换字符串为列表for item in data:url = "https://hbimg.huabanimg.com/" + item["file"]["key"]# 拼接图片地址index = item["file"]["type"].rfind("/")type = "."+item["file"]["type"][index + 1:]# 获取图片的类型file_name = item["raw_text"]# 获取图片的中文名download_img(url, file_name,type)# 下载图片'''
下载图片
url        图片的地址
name   图片的中文名
type     图片的类型
'''
def download_img(url,name,type):response = requests.get(url,verify=False)# 使用requests 下载图片index = url.rfind('/')file_name = name+url[index + 1:]+type# 获取图片的hash值print("下载图片:" + file_name)# 打印图片名称save_name = "./photo/" + file_name# 图片保存的地址(注意photo要自己建一个,与当前.py文件同一个文件夹)with open(save_name, "wb") as f:f.write(response.content)# 写入图片到本地
'''
定义主函数
'''
def main():login()# 如果到模块的名字是__main__ 执行main主函数
if __name__ == '__main__':main()

效果

【Python爬虫】花瓣网爬取美女图片相关推荐

  1. python爬虫实践之爬取美女图片

    目录 概述 准备 所需模块 涉及知识点 运行效果 完成爬虫 1. 分析网页 2. 爬虫代码 概述 爬取妹子图网的美女图片. 准备 所需模块 time requests lxml 涉及知识点 pytho ...

  2. Python爬虫实战 | (9) 爬取搜狗图片

    本篇博客我们将爬取百度图片,输入搜索词,爬取与搜索词相关的图片. 首先打开搜狗图片https://pic.sogou.com/,比如搜索"猫",此时的URL如下: https:// ...

  3. 【Python爬虫_8】爬取必应图片

    "' 需求:爬取必应的图片,并下载,以老师为例: '" 1.首先通过XHR找到图片的url地址,打开该地址可看到 确认链接找到正确,然后多找几个来分析,可以得到通用的url: ur ...

  4. Python爬虫:批量爬取变形金刚图片,下载保存到本地。

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 本文文章来自:CSDN 作者:Guapifang 其实和爬取普通数据本质一样,不过 ...

  5. Python爬虫——片库网 爬取 视频

    片库url:http://tv.cnco.me/ 一.进入网站 二.输入关键字跳转界面 格式: url = "http://tv.cnco.me/" search_keyword ...

  6. python爬虫六:爬取电影图片及简介

    # -*- coding: utf-8 -*-#2345电影排行榜 import requests from bs4 import BeautifulSoup#获取网站的通用类 def get_htm ...

  7. [day4]python网络爬虫实战:爬取美女写真图片(Scrapy版)

    l> 我的新书<Android App开发入门与实战>已于2020年8月由人民邮电出版社出版,欢迎购买.点击进入详情 文章目录 1.开发环境 2.第三方库 3.Scrapy简介 4. ...

  8. [day1]python网络爬虫实战:爬取美女写真图片

    l> 我的新书<Android App开发入门与实战>已于2020年8月由人民邮电出版社出版,欢迎购买.点击进入详情 文章目录 1.开发环境 2.第三方库 3.实现 1.分析url格 ...

  9. [day2]python网络爬虫实战:爬取美女写真图片(增强版)

    l> 我的新书<Android App开发入门与实战>已于2020年8月由人民邮电出版社出版,欢迎购买.点击进入详情 文章目录 1.开发环境 2.第三方库 3.实现 1.分析url格 ...

  10. Python【爬虫实战】爬取美女壁纸资源

    Python[爬虫实战]爬取美女壁纸资源 一:首先选取一个网站,这里我们选择了一个壁纸网站 二:进入网站,我们可以看到很多图片放在一页里 三:按下F12开发者工具,点击Elments查看网页的代码 四 ...

最新文章

  1. 从零开始学python微课视频版-从零开始学Python(微课视频版)
  2. 如何解决多线程并发访问一个资源的安全性问题?
  3. 直接插入排序及优化(二分查找插入排序)
  4. php资源文件html,nginx 同一域名下分目录配置显示php,html,资源文件
  5. python读取sas数据集_利用Python获取SAS和R自带数据集
  6. gnuplot在windows下的安装和使用
  7. matlab边的介数,matlab-bgl-master 复杂网络工具包,便于计算 边介数,最短路径等问题 261万源代码下载- www.pudn.com...
  8. 派对屋效果器调试_派对屋DAK-780使用说明书
  9. 51单片机基本刷屏测试实验_320x240真彩TFT屏51单片机驱动刷屏程序
  10. 华为云计算认证考试大纲是什么?华为云计算认证含金量高吗?
  11. 儿童手表语音物联卡贵吗?如何办理?
  12. 关于雅虎邮箱的Foxmail,outlook设置。
  13. 高等数学:第八章 多元函数的微分法及其应用(6)微分法在几何上的应用
  14. 2022年第一季度保险服务数字化跟踪分析
  15. 电路板上的插头怎么拔下来_怎么从电路板上拆卸多针脚电子元器件
  16. java基础篇---第一天
  17. Android阿拉伯适配rtl
  18. 自控力读书笔记:第二章 意志力的本能:人生来就能地址奶酪蛋糕的诱惑
  19. Android11以上版本使用高德定位,定位成功,卫星数一直为0
  20. Vue+Vuex+Axios+ECharts 画一个动态更新的中国地图

热门文章

  1. 新萝卜家园Ghost XP SP3电脑城装机版2013.08
  2. 实例3、研究 ICMP 数据包
  3. 锐捷服务器端口映射教程,锐捷路由器端口映射,路由器端口映射
  4. 基于 Markdown 的中文文档排版规范
  5. BootStrap日历插件
  6. 微信小程序教程、开发资源下载汇总(2.8日更新,持续更新中……)
  7. 鼠标停留在按钮上显示文字
  8. iPhone5捣鼓mobile terminal
  9. 金蝶K3 Wise—BOM批量多级展开
  10. JavaWeb在线商城系统(java+jsp+servlet+MySQL+jdbc+css+js+jQuery)