今天分享一篇在家就能养眼的技能,用python爬取街拍美女高清大图,然后批量插入word中,制作街拍美图手册,闲的时候就能拿出来养养眼。
本文涉及知识主要包括Ajax动态加载网页爬取、requests保存网页图片以及word批量插入图片
第一步:分析图片数据接口
打开今日头条主页,搜索街拍,会出现好多街拍图片
一直往下拉,图片会一直加载,但是网页url未变化,这时我们要打开流量分析工具。以火狐浏览器为例,依次右键-查看元素-网络,然后点击左上角清除按钮
下拉网页:
出现一大堆加载数据,这时我们打开第一个的json文件的响应窗口:
发现这返回的就是街拍图片信息,每次返回20条,再看看它的请求参数:
经过试验发现,timestamp和_signature是变化参数,但是可以舍弃,最后以offset的变化来改变换页(0代表第1页,20代表第2页,依次类推...)
第二步:python下载图片
准备下载20页的数据
1.首先构造url
<code>for
iin
range(20
): url ='https
:'offset
={0
}&format=json&keyword=%E8%A1%97
%E6%8
B%8
D&autoload=true
&count=20
&en_'\'qc
=1
&cur_tab=1
&from=search_tab&pd=synthesis'.format(i*20
)/<code>
2.模拟请求数据,并将返回数据转换成json格式
<code>response
=requests.get(url, headers=header, cookies=cookie)Imgs
= json.loads(response.text)['data'
]/<code>
一定要带上登录后的cookie数据,否则无法返回图片信息
3.从返回数据中取出标题和图片url
<code>for
iin
Imgs:if
'title'
in
list
(i.keys(
)): title = i['title'
] Imgurl = i['other_image_url'
]/<code>
4.requests下载图片,并以标题命名
<code>imgeresp =requests.get
(Imgurl)withopen
('img\{0}.jpg'
.format(title),'wb'
)as
f: f.write(imgeresp.content)/<code>
5.图片效果展示
看看就很养眼,想要高清大图的请私聊我
第三步:word批量插入图片
安装docx和PIL模块,直接pip安装即可
1.导入相关模块
<code>import
osfrom PIL importImagefrom docx importDocumentfrom docx.sharedimport
Inches/<code>
2.遍历该文件夹下所有图片名
<code>file ='图片路径'
myDocument =Document()for
root, dirs, filesinos
.walk(file):for
fin
files: ImgFile =os
.path
.join(root, f)/<code>
3.获取每张图片像素大小
<code>img
=Image.open(ImgFile)pixel
= list(img.size)/<code>
主要是因为街拍图片像素差别较大,想按原像素大小导入word中,img.size为元组类型数据,这里用list将其转化为列表
4.将图片按原像素添加至word中
<code>myDocument
.add_picture
(ImgFile, width=Inches(pixel[0
]/72
), height=Inches(pixel[1
]/72
))/<code>
5.最终效果
本文代码已上传至【python的爬虫与数据分析之路】,请在后台回复街拍获取。