有人问我为什么学爬虫,那是因为我喜欢小姐姐
发布日期:2021-06-29 17:34:45 浏览次数:2 分类:技术文章

本文共 3344 字,大约阅读时间需要 11 分钟。

点击上方蓝色字关注我们~

百度性感美女壁纸了解一下

今天咱们要爬取花瓣网 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 requestsimport reimport 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爬虫系列教程》

资料获取:

1.扫描下方二维码(非本号)

2. 回复关键词:项目

长按上方二维码 2 秒 

回复「项目」即可获取资料

转载地址:https://cpython.blog.csdn.net/article/details/117829645 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:用Selenium来爬取数据?真挺简单的!
下一篇:一行代码玩转“微信表情”

发表评论

最新留言

很好
[***.229.124.182]2024年04月17日 17时31分53秒