当前位置: 移动技术网 > IT编程>脚本编程>Python > 【小盐巴学习笔记】—用Python爬取百度表情包

【小盐巴学习笔记】—用Python爬取百度表情包

2020年11月20日  | 移动技术网IT编程  | 我要评论
【小盐巴学习笔记】—用Python爬取城市名目录前言第一次先整点简单的!! 涨涨信心一、爬虫分析首先看看今天要爬取的网址https://www.aqistudy.cn/historydata/

【小盐巴学习笔记】—用Python爬取百度表情包

前言

第一次先整点简单的!! 涨涨信心

一、爬虫分析

首先看看今天要爬取的表情包网址

https://image.baidu.com/search/index?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=result&fr=&sf=1&fmq=1605756395606_R&pv=&ic=&nc=1&z=&hd=&latest=&copyright=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&sid=&word=%E6%B2%99%E9%9B%95%E8%A1%A8%E6%83%85%E5%8C%85

1.分析网址

首先判断网址是动态网址还是静态网址,静态网址就是直接能从这串网址里找到页码

在这里插入图片描述
然后往下翻往下翻,发现网页是下滑加载表情图片的方式,而加载更多图片后上面网址纹丝不动


这不就是妥妥的动态加载了嘛!

2.分析数据

打开F12,根据123步骤依次点击network->XHR->重新加载数据

在这里插入图片描述
一直往下翻,看右侧数据变化

在这里插入图片描述
发现多了一排看起来一样的东西,应该就是我们的图片网址了,不确定先可以打开2处的网址瞅一眼

现在把几个链接的网址都复制到word找规律

在这里插入图片描述
这个pn应该就是页码,可以看出每一页都增加了30,那么第一页应该是0,第二页30,第三页60…

二、完整代码

终于做好了前期准备工作,可以搞事啦!
附上完整代码和详细注释

import requests
import re
import os
# 文件夹不存在就新建一个
dirName='image'
if not os.path.exists(dirName):
    os.mkdir(dirName)
def getData(page):
    # 获取网址
    url='https://image.baidu.com/search/acjson?tn=resultjson_com&logid=7812402730072952517&ipn=rj&ct=201326592&is=&fp=result&queryWord=%E6%B2%99%E9%9B%95%E8%A1%A8%E6%83%85%E5%8C%85&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=&hd=&latest=&copyright=&word=%E6%B2%99%E9%9B%95%E8%A1%A8%E6%83%85%E5%8C%85&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&expermode=&force=&pn={}&rn=30&gsm=5a&1605831983508='.format(page)
    # 设置Headers信息,模拟成浏览器访问
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 UBrowser/6.2.4098.3 Safari/537.36'}
    # 解析数据,这里用的是正则
    page_text=requests.get(url=url,headers=headers).text
    ex='"thumbURL":"(.*?)"'
    data=re.findall(ex,page_text)
    # 保存数据
    for i in data:
        # 解析每一页图片网址
        img_data=requests.get(url=i,headers=headers).content
        # 以图片地址后缀作为图片名
        img_name=i.split('/')[-1]
        # 保存图片
        with open(dirName+'/'+img_name,mode='wb') as f:
            f.write(img_data)
if __name__ == "__main__":
    # 爬取前3页
    for i in range(0,90,30):
        getData(i)

运行效果如下:

在这里插入图片描述

总结

爬取动态数据还是要靠多练。

本文地址:https://blog.csdn.net/qq_45459248/article/details/109803834

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网