今日头条的街拍图片的简单自动爬取

import requests
import re,os
import json
from urllib import request
#定义一个函数
def tout(url):
    #定义头部信息
    headers = {
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'
    }
    response = requests.get(url)
    #直接用json方法转成字典类型
    res_dict = response.json()
    # print(type(res_dict))
    #设置一个文件夹用来存放爬取的照片
    if not os.path.exists('downloads'):
        os.mkdir('downloads')
    #循环取出详情页的url
    for v in res_dict['data']:
        if 'article_url' in v :
            s = v['article_url']

            response = requests.get(s,headers=headers)


            res_str = response.text

            sp = r'JSON\.parse\((.*)\),'
            #利用正则的方法匹配出图片路径
            c_res = re.search(sp,res_str)

            if c_res:
                #这儿两次转字典,第一次是去掉最外面的双引号,第二次是转为字典类型
                res = json.loads(c_res.group(1))
                res_dict = json.loads(res)
                urlss = res_dict['sub_images']
                #循环遍历出图片的路径
                for v in urlss:
                    urls = v['url']
                    # print(urls)
                    #定义文件名
                    filename = urls.split('/')[-1] + '.jpg'
                    print(filename)
                    #文件保存路径
                    paths = 'downloads/'+filename
                    #下载图片的方法
                    request.urlretrieve(urls,paths)
#定义一个循环,可以自己DIY循环的次数
i = 0
while i<21:
    url = 'https://www.toutiao.com/search_content/?offset='+str(i)+'&format=json&keyword=%E8%A1%97%E6%8B%8D&autoload=true&count=20&cur_tab=1&from=search_tab'
    #调用函数
    tout(url)
    i += 20





猜你喜欢

转载自blog.csdn.net/yangbenhao/article/details/81750415