今天咱们要爬取花瓣网 https://huaban.com/
设计师寻找灵感的天堂!有海量的图片素材可以下载,是一个优质图片灵感库

这次我们用 requests 登录花瓣网,爬取页面,再用正则与json提取有用信息,最后把获取的图片信息 保存到本地

一 、用到技术

  • python 基础
  • requests 登录页面获取session用户会话,下载图片
  • 正则表达式 提取页面的有用信息
  • json解析页面中的图片

二、 目标页面

https://huaban.com/search/?q=女神&category=photography

三、结果

四、安装 必要的库

  • win+R 打开运行
  • 输出cmd 进入控制台
  • 分别安装requests
pip install  requests

五、分析页面

  1. 页面规律
    我们单击分页按钮,拿到页面最后一个参数的规律
    第一页:https://huaban.com/search/?q=女神&category=photography&page=1
    第二页:https://huaban.com/search/?q=女神&category=photography&page=2

2.登录

通过Fiddler我们查看到登录请求的地址和参数

# 地址
https://huaban.com/auth/
# 参数"email": "******","password": "*****","_ref":"frame"

我决定使用requestssession()功能来获取用户登录后的会话session信息

3. 页面信息

我们通过右键查看源代码发现数据是保存在javascript里面的我们准备用正则表达式提取页面信息

六、全部代码

#-*- 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()

在线练习:https://www.520mg.com/it

IT 入门 感谢关注

17-用python爬取下载女神照片相关推荐

  1. python爬取下载m3u8加密视频,原来这么简单!

    1.前言 爬取视频的时候发现,现在的视频都是经过加密(m3u8),不再是mp4或者avi链接直接在网页显示,都是经过加密形成ts文件分段进行播放. 今天就教大家如果通过python爬取下载m3u8加密 ...

  2. 用python爬取下载b站视频

    B站之所以火,是因为趣味与知识并存.正如一句"你在B站看番,我在B站学习",B站还是有一些质量比较好的学习视频.当你在B站上看到喜欢的视频想保存下来时,怎么办呢? 转入正题,本篇推 ...

  3. python爬取单个网页照片!

    所爬取的网页链接, 本例为:http://college.koolearn.com/upload/school/kaoyan/10359.jpg 所爬取的网页链接,结尾必须是.jpg才可以得到一个照片 ...

  4. python爬取下载动态图片网站

    这次我们来爬取一个图片网站 unsplash.com,为什么要选择这个网站呢?因为这个网站的所有图片都是js动态请求生成的,所以说一般的爬取肯定是不行的啦 ~ 一.工具 这次爬取我们需要借助一款工具代 ...

  5. python 爬取电子书_看kindle网站电子书用Python爬取下载

    一个下载看kindle(kankindle.com)的所有电子书的python脚本,程序会自动下载首页部分13页的所有电子书,下载到ebook目录下,程序会检测是否下载过. #!/usr/bin/en ...

  6. 大神用Python 爬取了的心中女神的微信,是如何做到的?

    Python爬虫技术越来越火了,不仅可以爬微博.美女qq空间.还可以爬取微信工资号文章,还可以爬取微信,.如果可以用Python 爬取心中女神的微信,那就太棒了.昨晚偶然了解到Python里的itch ...

  7. python——图片爬虫:爬取爱女神网站(www.znzhi.net)上的妹子图 进阶篇

    在上一篇博客中:python--图片爬虫:爬取爱女神网站(www.znzhi.net)上的妹子图 基础篇 我讲解了图片爬虫的基本步骤,并实现了爬虫代码 在本篇中,我将带领大家对基础篇中的代码进行改善, ...

  8. 利用Python爬取一加云服务的所有照片(原图)

    利用Python爬取一加云服务的所有照片(原图) 一.使用工具 二.cookies和headers提取 三.Python源代码下载 一.使用工具 1.Python3.8(理论上Python3都可使用) ...

  9. python自动搜索爬取下载文件-python批量爬取下载抖音视频

    本文实例为大家分享了python批量爬取下载抖音视频的具体代码,供大家参考,具体内容如下 import os import requests import re import sys import a ...

最新文章

  1. iOS开发--线程通信
  2. linux 字符串截取_第13篇:Linux防火墙的日志基本审计
  3. 设置checkbox的只读
  4. 5.Ray-Handler之ToReadHandler编写
  5. TreeSet简单介绍与使用方法
  6. RedHat Linux 5企业版安装telnet
  7. Windows 10如何自定义任务栏上的程序
  8. 【珍藏级】商业杂志图表的经典用色
  9. R实战 | 聚类分析
  10. java 酒店系统_Java实现酒店客房管理系统
  11. 基因测序技术发展历史以及一、二、三代测序技术原理及应用
  12. java 子网掩码 位数_java实现子网掩码转换为网络标识位 | 学步园
  13. [BJWC2008]王之财宝
  14. 三角函数中的和差化积公式编辑方法
  15. 阿里云Ubuntu 18.04安装图形界面
  16. java + jfreechart + itextpdf创建折线图饼图并导出为pdf
  17. SAP CO01(创建生产订单)/MIGO(发货投料)前台操作
  18. word list 1
  19. qss 画框_PyQt5系列教程(77):QSS入门2
  20. 巧用千寻位置GNSS软件|如何快速查验精度

热门文章

  1. Flink基础系列17-Tranform之多流转换算子
  2. 信息化与信息系统(1)
  3. Educational Codeforces Round 13 A.Johny Likes Numbers B. The Same Calendar
  4. gitolite做git的权限管理
  5. c++ 将程序锁定到任务栏
  6. js,jsx,ts和tsx在用法上的区别
  7. 微信自带浏览器被输入法阻挡文本框的 jQuery 解决方法 by FungLeo
  8. php 面试常问的题目2
  9. 如何从0开始开展UI自动化测试
  10. Servlet 过滤器( Filter )