简单介绍
在今日头条中输入想要查找图片的名称,并实现相关图片的下载。
#相关工具以及模块
- 基于PyCharm编辑-----python3.7
- requests:pip install requests -i https://pypi.douban.com/simple
- json
- urllib: pip install urllib -i https://pypi.douban.com/simple
实现步骤
- 找出url规律:
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
主要关键的为keyword={}表示搜索的关键次,page_num----想要获取的页数,相关页面如下
- 构建url,并使用urllib.parse里面的urlencode进行编码
- 构建伪装浏览器,同时加上cookie,在cookie中经过测试只有ttwid参数是必要的
- 发送请求获取json格式数据,并依次获取图片链接
- 循环链接,再次发送请求,同时自动创建picture文件夹存放图片,实现图片下载。
相关代码
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',
}
#经过发现cookie当中两条数据是变化的,但ttwid是最主要的
cookie={
'ttwid':'1%7CvpcY2ijDUhRNtnvTXsePdm2UUX_ERonN1e_JaQUY004%7C1652798490%7Cf0009842f35d8bcaea9d44ebd3dbacf2a03c8a5547f99240a33efa0f192de414', #变化
# '_S_WIN_WH':'1366_663'#变化
}
#创建文件夹
pathd=os.getcwd()+'\\picture'
#判断mydata文件夹是否存在
if os.path.exists(pathd):
pass
else:
#创建mydata文件夹
os.mkdir(pathd)
def main(val):
values = {'keyword': val}
values1= urlencode(values)#编码
page_num=eval(input('请输入页数:'))
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__':
#填入关键词
main('泰勒斯威夫特')