千家信息网

如何使用Python抓取今日头条街拍图片数据

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍了如何使用Python抓取今日头条街拍图片数据,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。(1)抓取今日头条街拍图片
千家信息网最后更新 2026年11月02日如何使用Python抓取今日头条街拍图片数据

这篇文章主要介绍了如何使用Python抓取今日头条街拍图片数据,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

(1)抓取今日头条街拍图片

(2)分析今日头条街拍图片结构

keyword: 街拍pd: atlasdvpf: pcaid: 4916page_num: 1search_json: {"from_search_id":"20220104115420010212192151532E8188","origin_keyword":"街拍","image_keyword":"街拍"}rawJSON: 1search_id: 202201041159040101501341671A4749C4
可以找到规律,page_num从1开始累加,其他参数不变

(3)按功能不同编写不同方法组织代码

获取网页json格式数据

def get_page(page_num):    global headers    headers = {        'Host': 'so.toutiao.com',        #'Referer': 'https://so.toutiao.com/search?keyword=%E8%A1%97%E6%8B%8D&pd=atlas&dvpf=pc&aid=4916&page_num=0&search_json={%22from_search_id%22:%22202112272022060101510440283EE83D67%22,%22origin_keyword%22:%22%E8%A1%97%E6%8B%8D%22,%22image_keyword%22:%22%E8%A1%97%E6%8B%8D%22}',        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36',        'X-Requested-With': 'XMLHttpRequest',        'Cookie': 'msToken=S0DFBkZ9hmyLOGYd3_QjhhXgrm38qTyOITnkNb0t_oavfbVxuYV1JZ0tT5hLgswSfmZLFD6c2lONm_5TomUQXVXjen7CIxM2AGwbhHRYKjhg; _S_DPR=1.5; _S_IPAD=0; MONITOR_WEB_ID=7046351002275317255; ttwid=1%7C0YdWalNdIiSpIk3CvvHwV25U8drq3QAj08E8QOApXhs%7C1640607595%7C720e971d353416921df127996ed708931b4ae28a0a8691a5466347697e581ce8; _S_WIN_WH=262_623'    }    params = {        'keyword': '街拍',        'pd': 'atlas',        'dvpf': 'pc',        'aid': '4916',        'page_num': page_num,        'search_json': '%7B%22from_search_id%22%3A%22202112272022060101510440283EE83D67%22%2C%22origin_keyword%22%3A%22%E8%A1%97%E6%8B%8D%22%2C%22image_keyword%22%3A%22%E8%A1%97%E6%8B%8D%22%7D',        'rawJSON': 1,        'search_id': '2021122721183101015104402851E3883D'    }    url = 'https://so.toutiao.com/search?' + urlencode(params)    print(url)    try:        response=requests.get(url,headers=headers,params=params)        if response.status_code == 200:        #if response.content:            #print(response.json())            return response.json()    except requests.ConnectionError:        return None

从json格式数据提取街拍图片

def get_images(json):    images = json.get('rawData').get('data')    for image in images:        link = image.get('img_url')        yield link

将街拍图片以其md5码命名并保存图片

实现一个保存图片的方法 save_image(),其中 item 就是前面 get_images() 方法返回的一个字典。在该方法中,首先根据 item 的 title 来创建文件夹,然后请求这个图片链接,获取图片的二进制数据,以二进制的形式写入文件。图片的名称可以使用其内容的 MD5 值,这样可以去除重复。相关代码如下:

def save_image(link):    data = requests.get(link).content    with open(f'./image/{md5(data).hexdigest()}.jpg', 'wb')as f:#使用data的md5码作为图片名        f.write(data)

main()调用其他函数

def main(page_num):    json = get_page(page_num)    for link in get_images(json):        #print(link)        save_image(link)

(4)抓取20page今日头条街拍图片数据

这里定义了分页的起始页数和终止页数,分别为 GROUP_START 和 GROUP_END,还利用了多线程的线程池,调用其 map() 方法实现多线程下载。

if __name__ == '__main__':    GROUP_START = 1    GROUP_END = 20    pool = Pool()    groups = ([x for x in range(GROUP_START, GROUP_END + 1)])    #print(groups)    pool.map(main, groups)    pool.close()    pool.join()
import requestsfrom urllib.parse import urlencodefrom hashlib import md5from multiprocessing.pool import Pooldef get_page(page_num):    global headers    headers = {        'Host': 'so.toutiao.com',        #'Referer': 'https://so.toutiao.com/search?keyword=%E8%A1%97%E6%8B%8D&pd=atlas&dvpf=pc&aid=4916&page_num=0&search_json={%22from_search_id%22:%22202112272022060101510440283EE83D67%22,%22origin_keyword%22:%22%E8%A1%97%E6%8B%8D%22,%22image_keyword%22:%22%E8%A1%97%E6%8B%8D%22}',        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36',        'X-Requested-With': 'XMLHttpRequest',        'Cookie': 'msToken=S0DFBkZ9hmyLOGYd3_QjhhXgrm38qTyOITnkNb0t_oavfbVxuYV1JZ0tT5hLgswSfmZLFD6c2lONm_5TomUQXVXjen7CIxM2AGwbhHRYKjhg; _S_DPR=1.5; _S_IPAD=0; MONITOR_WEB_ID=7046351002275317255; ttwid=1%7C0YdWalNdIiSpIk3CvvHwV25U8drq3QAj08E8QOApXhs%7C1640607595%7C720e971d353416921df127996ed708931b4ae28a0a8691a5466347697e581ce8; _S_WIN_WH=262_623'    }    params = {        'keyword': '街拍',        'pd': 'atlas',        'dvpf': 'pc',        'aid': '4916',        'page_num': page_num,        'search_json': '%7B%22from_search_id%22%3A%22202112272022060101510440283EE83D67%22%2C%22origin_keyword%22%3A%22%E8%A1%97%E6%8B%8D%22%2C%22image_keyword%22%3A%22%E8%A1%97%E6%8B%8D%22%7D',        'rawJSON': 1,        'search_id': '2021122721183101015104402851E3883D'    }    url = 'https://so.toutiao.com/search?' + urlencode(params)    print(url)    try:        response=requests.get(url,headers=headers,params=params)        if response.status_code == 200:        #if response.content:            #print(response.json())            return response.json()    except requests.ConnectionError:        return Nonedef get_images(json):    images = json.get('rawData').get('data')    for image in images:        link = image.get('img_url')        yield linkdef save_image(link):    data = requests.get(link).content    with open(f'./image/{md5(data).hexdigest()}.jpg', 'wb')as f:#使用data的md5码作为图片名        f.write(data)def main(page_num):    json = get_page(page_num)    for link in get_images(json):        #print(link)        save_image(link)if __name__ == '__main__':    GROUP_START = 1    GROUP_END = 20    pool = Pool()    groups = ([x for x in range(GROUP_START, GROUP_END + 1)])    #print(groups)    pool.map(main, groups)    pool.close()    pool.join()

感谢你能够认真阅读完这篇文章,希望小编分享的"如何使用Python抓取今日头条街拍图片数据"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

图片 数据 头条 方法 篇文章 线程 不同 二进制 代码 文件 格式 页数 价值 兴趣 内容 函数 功能 参数 同时 名称 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 手磨咖啡 上海睿民互联网科技有限公司 互联网科技工作委员会毛军 科技与互联网 科技互联网技术 互联网科技视频 湖南诚度互联网科技有限公司 中国航天科技大学国际工业互联网 玉溪互联网科技怎么选 互联网科技和信息 互联网科技研发水平 互联网科技创新的路径 恒生互联网科技业指数调整周期 梅州GM互联网络科技有限公司 互联网营销推广黑科技 互联网科技包装股份有限公司上市 易租星互联网科技有限公司 中国互联网公司的科技投入 优雇互联网科技有限公司 瑞安市蟠桃会互联网科技有限公司 苏州大垚互联网科技 互联网科技公司介绍 中化能源互联网科技招聘 广州百诚互联网科技有限公司官网 本届互联网大会上的黑科技 上海万顺科技互联网有限公司招聘 张家口科技产业互联网平台 同城互联网络科技 北京军民互联网科技公司 科技发展第三阶段互联网时代
0