今天咱们要爬取花瓣网 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里面的我们准备用正则表达式提取页面信息

4. 图片地址

我们在网页中复制一张图片的地址,我们发现所有图片地址都是:

https://hbimg.huabanimg.com/3286081ba1b365db5cc54112cb1f4dc3238ffceb5fbe-aJMH3i

都是以域名加一段hash值来确定的

我们在源文件中也查看到这段hash值为对应的key

`

六、全部代码

#-*- 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": "替换成自己的用户名","password": "替换成自己的密码","_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()

单词表

main 主要的        login 登录
response 响应      content 内容
write 写入         save 保存
print 打印         rfind 从右边查找
download 下载      type 类型
group 组           search 查找
session 会话       group 组
headers 头部       data 数据
request  请求      coding 编码格式

《0基础python爬虫系列教程》

01为什么要学习爬虫 02-认识python爬虫
03-爬虫基本原理 04-爬虫利器Fiddler
05-HTTP协议 06-爬虫库urllib
07-TCP3 08-页面解析之数据提取
09-XPath 语言 10-lxml库
11-Beautiful Soup 12-正则表达式
13-python爬虫JSON操作 14-Python 读写 Excel
15-python爬取百度贴吧 16-python之Requests库

IT入门 感谢关注

一学就会 Python入门教程 →

程序员用的单词表→

练习地址:www.520mg.com/it

17-用python找女神什么感觉!相关推荐

  1. python内存管理和释放_《python解释器源码剖析》第17章--python的内存管理与垃圾回收...

    17.0 序 内存管理,对于python这样的动态语言是至关重要的一部分,它在很大程度上决定了python的执行效率,因为在python的运行中会创建和销毁大量的对象,这些都设计内存的管理.同理pyt ...

  2. linux 端口tnpl,利用Python找出9个连续的空闲端口

    这篇文章主要介绍了Python找出9个连续的空闲端口的方法,感兴趣的小伙伴们可以参考一下 一.项目需求 安装某软件,配置时候需要填写空闲的端口.查看5个平台的某个端口是否被占用 5个平台为window ...

  3. 使用 Python 为女神挑选口红 ,成功把女神拿下,你学会了吗

    口红对于女生来说永远不嫌多,而男生也搞不明白珊瑚红.番茄色.斩男色等等颜色有什么区别,不都是红色么?当送给女神的口红是她不适合的,那结果就是口红进入垃圾箱还算是轻的,重则拉黑处理.男生们也不用着急,我 ...

  4. 为何python不好找工作-谁说Python找工作难?人生苦短,Python工程师你们还好吗?...

    前几天看到某网站看到有人提了这么个问题,Python这么火,为啥找工作这么难呢? 近几年人工智能的发展确实推动了Python的热度,Python出现在了中小学课本,产品经理.运营等非程序员职业都认识到 ...

  5. 30岁自学python找工作-自学编程的30岁男人,能按应届生那样找工作吗?

    为什么都反对??? 我本科材料科学与工程,后肄业-- 28岁开始学编程,今年三十,为某小公司技术负责人. (2016.9.28更新,半年前换了一份工作了,在一个app团队担任后端主程.) 对比了一下, ...

  6. python找出素数_[Python 1] 如何使用Python找质数?

    学习生物信息需要熟练掌握一门甚至多门编程语言,比如Python.R.C++,这取决于你的需求. 但语言只是工具,最关键的是如何合理使用工具去解决生物学问题,这需要你去多写.多查.多看来锻炼.不然给你把 ...

  7. Python就业前景好不好?为什么学完Python找不到工作?

    近几年,Python从一门默默无闻的编程语言突然蹿红,引来不少编程学习者的青睐.一方面是Python在开发里的广泛使用和流行,另一方面是许多求职者的困惑,Python就业前景好不好?为什么学完Pyth ...

  8. python就业形势不好_Python就业前景好不好?为什么学完Python找不到工作?

    近几年,Python从一门默默无闻的编程语言突然蹿红,引来不少编程学习者的青睐.一方面是Python在开发里的广泛使用和流行,另一方面是许多求职者的困惑,Python就业前景好不好?为什么学完Pyth ...

  9. python就业前景不好_Python就业前景好不好?为什么学完Python找不到工作?

    近几年,Python从一门默默无闻的编程语言突然蹿红,引来不少编程学习者的青睐.一方面是Python在开发里的广泛使用和流行,另一方面是许多求职者的困惑,Python就业前景好不好?为什么学完Pyth ...

最新文章

  1. 小白兔写话_小学二年级写话-我的小白兔
  2. OpenCASCADE:Modeling Data之3D几何
  3. SSH-Struts第四弹:Struts2学习过程中遇到的问题
  4. php是独立服务吗,使用Sprockets作为PHP应用程序的独立服务
  5. android驱动测试,Android: 通过 cucumber 驱动 monkey 做稳定性测试
  6. 办公自动化及工作流技术
  7. java中render用法_如何在React中不在render函数中使用setState
  8. Java设计模式之迭代子模式
  9. 卢伟冰:越是入门机 越应该把使用体验做好
  10. Extjs项目使用技巧————文件上传
  11. c语言开发蓝牙驱动 win7,ATK-hc05蓝牙串口模块驱动
  12. greenDAO简单使用经验
  13. 【转】iPhone通讯录AddressBook.framework和AddressBookUI.framework的应用
  14. 有趣且有意义的数字,你想到了什么?请不吝留言
  15. 2021年全网最细 VirtualBox 虚拟机安装 Ubuntu 20.04.2.0 LTS及Ubuntu的相关配置
  16. Android 系统第三方应用系统修改权限及在应用上层显示权限默认打开
  17. “errmsg“ : “not master and slaveOk=false“_Mongo集群没有primary但有secondary时连接不上且不能读数据
  18. 网管必知:常用电脑密码破解
  19. 用amber计算dPCA(Dihedral angle principal component analysis)
  20. iOS音乐播放器小技巧

热门文章

  1. FPGA中亚稳态的理解(Understanding Metastability in FPGAs)
  2. Qt 使用 kdChart 自定义甘特图
  3. 学习方法阶段性复盘分享
  4. 《王者荣耀》与BMW宝马跨界合作
  5. LaTeX使用(公式,表格,图片,中文字符)
  6. sql server中区分大小写全半角
  7. text的竖排和横排
  8. [java] java全局变量 声明和定义
  9. python:实现二进制转八进制算法(附完整源码)
  10. struts2的国际化实例:中英文怎么转换