簡單介紹
在今日頭條中輸入想要查找圖片的名稱协饲,并實(shí)現(xiàn)相關(guān)圖片的下載柳弄。
#相關(guān)工具以及模塊
- 基于PyCharm編輯-----python3.7
- requests:pip install requests -i https://pypi.douban.com/simple
- json
- urllib: pip install urllib -i https://pypi.douban.com/simple
實(shí)現(xiàn)步驟
- 找出url規(guī)律:
https://so.toutiao.com/search?keyword=%E6%B3%B0%E5%8B%92%E6%96%AF%E5%A8%81%E5%A4%AB%E7%89%B9&pd=atlas&source=search_subtab_switch&dvpf=pc&aid=4916&page_num=0
主要關(guān)鍵的為keyword={}表示搜索的關(guān)鍵次精续,page_num----想要獲取的頁數(shù)蚪拦,相關(guān)頁面如下
結(jié)果截圖.jpg
- 構(gòu)建url状原,并使用urllib.parse里面的urlencode進(jìn)行編碼
- 構(gòu)建偽裝瀏覽器挚赊,同時加上cookie藻三,在cookie中經(jīng)過測試只有ttwid參數(shù)是必要的
- 發(fā)送請求獲取json格式數(shù)據(jù)洪橘,并依次獲取圖片鏈接
- 循環(huán)鏈接,再次發(fā)送請求棵帽,同時自動創(chuàng)建picture文件夾存放圖片熄求,實(shí)現(xiàn)圖片下載。
相關(guān)代碼
import requests
import json
import os
from urllib.parse import urlencode
#偽裝瀏覽器
header={
'Host': 'so.toutiao.com',
'Referer':'https://so.toutiao.com/search?keyword=%E8%A1%97%E6%8B%8D&pd=atlas&source=search_subtab_switch&dvpf=pc&aid=4916&page_num=0',
'User-Agent':'Chrome/98.0.4750.0 Safari/537.36',
}
#經(jīng)過發(fā)現(xiàn)cookie當(dāng)中兩條數(shù)據(jù)是變化的逗概,但ttwid是最主要的
cookie={
'ttwid':'1%7CvpcY2ijDUhRNtnvTXsePdm2UUX_ERonN1e_JaQUY004%7C1652798490%7Cf0009842f35d8bcaea9d44ebd3dbacf2a03c8a5547f99240a33efa0f192de414', #變化
# '_S_WIN_WH':'1366_663'#變化
}
#創(chuàng)建文件夾
pathd=os.getcwd()+'\\picture'
#判斷mydata文件夾是否存在
if os.path.exists(pathd):
pass
else:
#創(chuàng)建mydata文件夾
os.mkdir(pathd)
def main(val):
values = {'keyword': val}
values1= urlencode(values)#編碼
page_num=eval(input('請輸入頁數(shù):'))
for j in range(0,page_num):
url = 'https://so.toutiao.com/search?{}&pd=atlas&source=search_subtab_switch&dvpf=pc&aid=4916&page_num={}&rawJSON=1'.format(values1,str(j))
# print(url)
red=requests.session()
response=red.get(url,headers=header,cookies=cookie)
#a=response.text
a=json.loads(response.content)
urll=a['rawData']['data']
for i in range(len(urll)):
image_url=urll[i]['img_url']
# print(image_url)
#下載圖片
pic=requests.get(image_url)
with open('./picture/'+str(j)+str(i)+'.jpg','wb+') as f:
f.write(pic.content)
if __name__=='__main__':
#填入關(guān)鍵詞
main('泰勒斯威夫特')
結(jié)果截圖
結(jié)果截圖1.jpg