千家信息网

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

发表于:2025-11-10 作者:千家信息网编辑
千家信息网最后更新 2025年11月10日,这篇文章主要介绍了如何使用Python抓取今日头条街拍图片数据,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。(1)抓取今日头条街拍图片
千家信息网最后更新 2025年11月10日如何使用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安全错误 数据库的锁怎样保障安全 颈复康颗粒广告数据库 网络安全知识小学生100条 审计局网络安全教育报告 行唐什么软件开发服务至上 记录网络安全行为水粉画 淮安计算机网络技术管理系统 网络技术初中课外阅读措施 企业新增贷款数据库 索尼有几个服务器 广西智能养老软件开发哪儿好 网站数据库服务器配置 武汉达梦数据库管理系统优缺点 黄浦区上门软件开发报价方案 会网络技术的人厉害吗 iphone软件开发工具 使用服务器做什么是违法的 中山机器人rpa软件开发 丰源科技推出互联网 山一大二附院网络安全宣传周活动 王者荣耀服务器崩了 舟山财务软件开发公司 mysql数据库误删 命令行卸载2012数据库 网络技术初中课外阅读措施 服务器显示屏黑屏一会又自动关闭 数据库设计用户表格 电信网络安全诈骗 中山机器人rpa软件开发 尚米网络技术6 晋中师范高等专科学校网络技术
0