输入关键词获取今日头条免费图片

简单介绍

在今日头条中输入想要查找图片的名称,并实现相关图片的下载。

#相关工具以及模块

  1. 基于PyCharm编辑-----python3.7
  2. requests:pip install requests -i https://pypi.douban.com/simple
  3. json
  4. urllib: pip install urllib -i https://pypi.douban.com/simple

实现步骤

  1. 找出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----想要获取的页数,相关页面如下
    输入关键词获取今日头条免费图片_第1张图片

  2. 构建url,并使用urllib.parse里面的urlencode进行编码

  3. 构建伪装浏览器,同时加上cookie,在cookie中经过测试只有ttwid参数是必要的

  4. 发送请求获取json格式数据,并依次获取图片链接

  5. 循环链接,再次发送请求,同时自动创建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('泰勒斯威夫特')



结果截图

输入关键词获取今日头条免费图片_第2张图片

你可能感兴趣的:(python---爬虫,python,pycharm,chrome)