17-用python找女神什么感觉!
今天咱们要爬取花瓣网 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"
我决定使用requests
的session()
功能来获取用户登录后的会话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找女神什么感觉!相关推荐
- python内存管理和释放_《python解释器源码剖析》第17章--python的内存管理与垃圾回收...
17.0 序 内存管理,对于python这样的动态语言是至关重要的一部分,它在很大程度上决定了python的执行效率,因为在python的运行中会创建和销毁大量的对象,这些都设计内存的管理.同理pyt ...
- linux 端口tnpl,利用Python找出9个连续的空闲端口
这篇文章主要介绍了Python找出9个连续的空闲端口的方法,感兴趣的小伙伴们可以参考一下 一.项目需求 安装某软件,配置时候需要填写空闲的端口.查看5个平台的某个端口是否被占用 5个平台为window ...
- 使用 Python 为女神挑选口红 ,成功把女神拿下,你学会了吗
口红对于女生来说永远不嫌多,而男生也搞不明白珊瑚红.番茄色.斩男色等等颜色有什么区别,不都是红色么?当送给女神的口红是她不适合的,那结果就是口红进入垃圾箱还算是轻的,重则拉黑处理.男生们也不用着急,我 ...
- 为何python不好找工作-谁说Python找工作难?人生苦短,Python工程师你们还好吗?...
前几天看到某网站看到有人提了这么个问题,Python这么火,为啥找工作这么难呢? 近几年人工智能的发展确实推动了Python的热度,Python出现在了中小学课本,产品经理.运营等非程序员职业都认识到 ...
- 30岁自学python找工作-自学编程的30岁男人,能按应届生那样找工作吗?
为什么都反对??? 我本科材料科学与工程,后肄业-- 28岁开始学编程,今年三十,为某小公司技术负责人. (2016.9.28更新,半年前换了一份工作了,在一个app团队担任后端主程.) 对比了一下, ...
- python找出素数_[Python 1] 如何使用Python找质数?
学习生物信息需要熟练掌握一门甚至多门编程语言,比如Python.R.C++,这取决于你的需求. 但语言只是工具,最关键的是如何合理使用工具去解决生物学问题,这需要你去多写.多查.多看来锻炼.不然给你把 ...
- Python就业前景好不好?为什么学完Python找不到工作?
近几年,Python从一门默默无闻的编程语言突然蹿红,引来不少编程学习者的青睐.一方面是Python在开发里的广泛使用和流行,另一方面是许多求职者的困惑,Python就业前景好不好?为什么学完Pyth ...
- python就业形势不好_Python就业前景好不好?为什么学完Python找不到工作?
近几年,Python从一门默默无闻的编程语言突然蹿红,引来不少编程学习者的青睐.一方面是Python在开发里的广泛使用和流行,另一方面是许多求职者的困惑,Python就业前景好不好?为什么学完Pyth ...
- python就业前景不好_Python就业前景好不好?为什么学完Python找不到工作?
近几年,Python从一门默默无闻的编程语言突然蹿红,引来不少编程学习者的青睐.一方面是Python在开发里的广泛使用和流行,另一方面是许多求职者的困惑,Python就业前景好不好?为什么学完Pyth ...
最新文章
- 小白兔写话_小学二年级写话-我的小白兔
- OpenCASCADE:Modeling Data之3D几何
- SSH-Struts第四弹:Struts2学习过程中遇到的问题
- php是独立服务吗,使用Sprockets作为PHP应用程序的独立服务
- android驱动测试,Android: 通过 cucumber 驱动 monkey 做稳定性测试
- 办公自动化及工作流技术
- java中render用法_如何在React中不在render函数中使用setState
- Java设计模式之迭代子模式
- 卢伟冰:越是入门机 越应该把使用体验做好
- Extjs项目使用技巧————文件上传
- c语言开发蓝牙驱动 win7,ATK-hc05蓝牙串口模块驱动
- greenDAO简单使用经验
- 【转】iPhone通讯录AddressBook.framework和AddressBookUI.framework的应用
- 有趣且有意义的数字,你想到了什么?请不吝留言
- 2021年全网最细 VirtualBox 虚拟机安装 Ubuntu 20.04.2.0 LTS及Ubuntu的相关配置
- Android 系统第三方应用系统修改权限及在应用上层显示权限默认打开
- “errmsg“ : “not master and slaveOk=false“_Mongo集群没有primary但有secondary时连接不上且不能读数据
- 网管必知:常用电脑密码破解
- 用amber计算dPCA(Dihedral angle principal component analysis)
- iOS音乐播放器小技巧