今天分享一篇在家就能養眼的技能,用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的爬蟲與數據分析之路】,請在後臺回覆街拍獲取。