Python爬虫 | 批量爬取某图网站高质量*敏*感*词*姐照片

优采云 发布时间: 2022-06-11 20:22

  Python爬虫 | 批量爬取某图网站高质量*敏*感*词*姐照片

  鉴于以上情况,这里咱们重点强调声明:本文仅限于做技术交流学习,请勿用作任何非法商用!

  图虫创意是北京字节跳动科技*敏*感*词*所创立的正版照片及视频素材平台 ,致力于为用户提供正版素材内容及数字资产管理解决方案。

  0.先看一波美照吧

  

  很正经的图

  接下来,我们按照上次在《》介绍的爬虫流程来展开介绍这次爬虫实战哈。

  1.网页分析

  打开目标网页(%E7%BE%8E%E5%A5%B3),发现下拉会加载更多但是网页地址栏的url没有变化。因此,我们断定这是一个动态网页,于是有了以下步骤:

  需要按“F12”进入到浏览器的开发者模式;点击“Network”—>XHR或JS或者你全部查找看;进行翻页(可能是点击下一页或者下滑加载更多或者直接F5刷新页面);观察第2步中name模块的内容变化,寻找。

  很好,我们找到了照片组图信息所在,如下图所示,在请求的结果中的postList里是单页全部照片组信息列表,列表的每个元素中的imges里是该组照片信息列表。通过这些字段大致能理解照片img_id归属于某个作者user_id或author_id。

  记住这组照片信息:

  # 照片id<br />img_id = 360962642<br /># 照片归属作者id<br />author_id = 5489136<br />

  组图照片信息

  我们点开Headers模块,可以看到真实请求地址基础URL和请求参数如下:

  # 基础URL<br />url='https://tuchong.com/rest/tags/%E7%BE%8E%E5%A5%B3/posts'<br /># 请求参数<br />parames ={<br />    'page': 1, # 随着翻页而递增变化<br />    'count': 20,<br />    'order': 'weekly',<br />    'before_timestamp': ''<br />    }<br />

  

  真实URL地址及参数

  到这里没完,单纯知道了请求这些组图信息列表的地址,但是每个组图里照片的地址暂时还无法得知。于是我们点开某个组图进行进一步查看,在组图的详情页里,F12->Elements 查看照片元素信息,发现结果如下:

  组图详情页

  在网页HTML源代码里,我们找到了照片的地址为。

  结合之前我们记住的照片信息如下,我们便可以拼接出目标照片的地址了。

  # 照片id<br />img_id = 360962642<br /># 照片归属作者id<br />author_id = 5489136<br /><br /># 照片地址<br />img_url = f'https://photo.tuchong.com/{author_id}/f/{img_id}.jpg'<br />

  在浏览器输入这个照片地址,我们发现果然就是我们需要的:

  目标照片2.请求数据

  这一步就比较简单了,直接引入requests库,然后get请求即可。

  import requests<br /># 基础URL地址<br />url = 'https://tuchong.com/rest/tags/%E7%BE%8E%E5%A5%B3/posts'<br /># 请求参数<br />parames ={<br />    'page': 1,<br />    'count': 20,<br />    'order': 'weekly',<br />    'before_timestamp': ''<br />    }<br /><br />r = requests.get(url, params=parames)<br /># 前面网页分析结果是请求结果为json格式数据<br />j = r.json()<br />

  3.解析数据

  我们查看请求结果中的json数据结构,可以很快找到目标照片的url地址参数:

  json数据结构

  我们以获取单个照片url地址为例展示:

  4.存储数据

  由于本篇抓取的是照片这类二进制文件,因此存储方式可以选择创建一个文件,然后写入请求的二进制文件内容即可。

  # 以作者id和图片id组合而成图片名称<br />name = f'{author_id}-{img_id}.jpg'<br />with open(name,'wb') as f:<br />    f.write(img)<br />

  5.完整代码

  毕竟图虫网提供高质量的图片,而且都是版权所有的,咱们也就只是用于学习演示不要太过分,爬取10页数据。

  代码比较简单不够优雅,没有做模块化处理,大家可以自行优化哈~

  import requests<br />import time<br /><br />url = 'https://tuchong.com/rest/tags/%E7%BE%8E%E5%A5%B3/posts'<br /><br /># 翻页<br />num = 10<br />total = 0<br />for page in range(1,num+1):<br />    time.sleep(5)    <br />    parames ={<br />        'page': page,<br />        'count': 20,<br />        'order': 'weekly',<br />        'before_timestamp': ''<br />        }<br />    <br />    r = requests.get(url, params=parames)<br />    j = r.json()<br />    # 组图列表<br />    postList = j['postList']<br />    # 遍历组图<br />    for post in postList:<br />        # 作者id<br />        author_id = post['author_id']        <br />        # 组图照片列表<br />        images = post['images']<br />        # 遍历组图照片列表图片并下载<br />        for image in images:<br />            total = total+1<br />            img_id = image['img_id']<br />            img_url = f'https://photo.tuchong.com/{author_id}/f/{img_id}.jpg'     <br />            r_img = requests.get(img_url)<br />            img = r_img.content<br />            name = f'{author_id}-{img_id}.jpg'<br />            # 写入本地<br />            with open(name,'wb') as f:<br />                f.write(img)<br /><br />            print(f'{page}页 共 {total}张 照片已经下载')<br />

  批量下载

  近期文章Python网络爬虫与文本数据分析bsite库 | 采集B站视频信息、评论数据<br />爬虫实战 | 采集&可视化知乎问题的回答<strong>pdf2docx库 | 转文件格式,支持抽取文件中的表格数据</strong>rpy2库 | 在jupyter中调用R语言代码tidytext | 耳目一新的R-style文本分析库reticulate包 | 在Rmarkdown中调用Python代码plydata库 | 数据操作管道操作符>>plotnine: Python版的ggplot2作图库<br />七夕礼物 | 全网最火的钉子绕线图*敏*感*词*<br />读完本文你就了解什么是文本分析<br />文本分析在经管领域中的应用概述  综述:文本分析在市场营销研究中的应用<br />plotnine: Python版的ggplot2作图库小案例: Pandas的apply方法  stylecloud:简洁易用的词云库 用Python绘制近20年地方财政收入变迁史视频  Wow~70G上市公司定期报告数据集<br />漂亮~pandas可以无缝衔接Bokeh  YelpDaset: 酒店管理类数据集10+G  <br />

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线