作者:叶耀荣
源自:https://zhuanlan.zhihu.com/p/42728565

不知道有没有小哥哥、小姐姐喜欢cosplay的,今天小编就分享一个关于爬取cosplay图片,emmmm,先来几张图活跃一下气氛!

咳咳咳.....接下来咱们就进入正题!

首先,进入半次元,点击COS,热门推荐

点击F12,可以看到开发者工具窗口

我们以第一张COS照片的代码进行分析....额...第二张好看,还是从第二张开始吧。

红框里面就是这张图片的html代码,然后我们以正常访问方式点击图片进入网页,可以看到这张图片分辨率更高。

我们与之前HTML代码的图片的URL进行比较

可以看见,2X3是我们第一次进网页时第一张COS照片得到的URL,w650是进入COS照片详细页面后得到的URL,发现他们的区别是URL代码中的最后一段。

其他COS照片以此类推

我们在第一次进入的页面继续往下滑,发现该网页滚到结尾时自动更新,可以确定网页使用了AJAX技术,我们回到置顶刷新界面,等网页加载好后按F12打开开发者工具,操作如图

点击XHR

我们继续往下划,等到页面更新时发现新条码 点击条目

在Headers页面往下滑,看见X-Reauested-With:XMLHttpRequest,表明是AJAX请求,找到Query String Parameters,这就是AJAX请求的数据,在Preview中可以看见AJAX返回的数据。

继续往下划,让网页数据更新,发现Network中又新出现的几个新条目

我们比较Query String Parameters的AJAX请求数据,发现

  1. grid_type: 
    flow

  2. sort: 
    hot

3.tag_id: 
399

这三条数据和其他Network条目是相同的,但是since不相同,和其他条目对比http://25853.xxx其中xxx这三个数字是不规律的,其中since中25853小数点后的数据为565、523、483、428(以实际情况为准,仅供参考),意味着我们在接下来图片爬取中since数据要手动输入

import re
import requests
from pyquery import PyQuery as pq
import time
from urllib.parse import urlencodeFilepath='cosplay' #目录文件名 可以修改 注意不要含有"/"def get_html(url):proxies = {"https": "https://183.129.207.73:14823", "https": "https://114.215.95.188:3128", }headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'}getweb = requests.get(str(url),headers=headers,proxies=proxies)try:return getweb.textexcept Exception as e:print(e)except IOError as e1:print(e1)def DownloadFileWithFilename(url,filename,path):import requestsimport osimport retry:if not os.path.exists(path):os.mkdir(path)if not os.path.exists(path):r = requests.get(url)r = requests.get(url)with open(str(path) + "/"+str(filename), "wb") as code:code.write(r.content)print('Downloaded!',str(path) + "/"+str(filename))except IOError as e:print("Download Failed!")print(e)except Exception as e1:print(e1)print("Download Failed!")def getStaticHtmlImage(): #获取没有AJAX更新时网页的COSPLAY图片global Filepathweb_static_state='https://bcy.net/coser'doc = pq(web_static_state)image = doc('li.js-smallCards._box a.db.posr.ovf img.cardImage').items()for i in image:  # 爬取ajax网页数据i = str(i.attr('src')).rstrip('/2X3')  # 这里的i是把获取的URL最后一段/2x3去除filename = str(re.search('[^/]+(?!.*/)', i).group(0))  # filename是URL的最后一段:xxx.jpgi2 = i + str('/w650')  # i2是高清图片URL:xxxxx/w650DownloadFileWithFilename(i2, filename, Filepath)time.sleep(3) #休眠三秒 防止封IPdef getDynamicHtmlImage(since1): #获取ajax更新数据的COSPLAY图片global Filepathajax_get_data = {'since':since1,'grid_type':'flow','sort':'hot','tag_id':'399',}proxies = {"https": "https://183.129.207.73:14823", "https": "https://114.215.95.188:3128", }headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'}web_dynamic = requests.get('https://bcy.net/circle/timeline/showtag?'+urlencode(ajax_get_data),headers=headers, proxies=proxies).textdoc = pq(web_dynamic)image = doc('li.js-smallCards._box a.db.posr.ovf img.cardImage').items()for i in image:  # 爬取ajax网页数据i = str(i.attr('src')).rstrip('/2X3')  # 这里的i是把获取的URL最后一段/2x3去除filename = str(re.search('[^/]+(?!.*/)', i).group(0))  # filename是URL的最后一段:xxx.jpgi2 = i + str('/w650')  # i2是高清图片URL:xxxxx/w650DownloadFileWithFilename(i2, filename, Filepath)time.sleep(3) #休眠三秒 防止封IPgetStaticHtmlImage()list_since = ['25861.565','25861.523','25861.483','25861.428'] #ajax请求的sincefor i in list_since:print(i)getDynamicHtmlImage(i)

爬取下来的小姐姐

很激动......

python3 爬取半次元cosplay图片相关推荐

  1. python爬取图片源码_半次元图片爬取-python爬取半次元图片源码下载-西西软件下载...

    python爬取半次元图片源码,由大神自制的python爬取工具,本源码针对半次元图片平台,可以爬取最新的网站图片资源,支持自定义保存目录,非常方便,需要requests库的支持,想要相关源码资源的朋 ...

  2. python3爬取30张百度图片大量百度图片【王俊凯】

    python3爬取30张百度图片&大量百度图片[王俊凯] 30张图片(easy!) 好多好多图片! 复习C++之前先玩了一下爬虫,这学期属于是入了小凯的坑爬不出来了qwq 先看结果捏~ 学习了 ...

  3. Python爬取半次元图片[一]

    用到模块有requests,BeautifulSoup4,lxml(BeautifulSoup基于这个解析,据说速度会快很多),re(正则ps.只用到了一个compile函数) 介绍下思路: 创建Im ...

  4. python3APP爬虫--爬取王者荣耀英雄图片(附源码)

    文章目录 一.准备工作 1.工具 二.思路 1.整体思路 2.爬虫思路 三.获取数据 1.抓包 2.分析json 四.撰写爬虫 五.得到数据 六.总结 之前有写过抖音app用户信息爬虫,因为当时是第一 ...

  5. python3爬取百度图片

    python3爬取百度图片 最终目的:能通过输入关键字进行搜索,爬取相应的图片存储到本地或者数据库 首先打开百度图片的网站,搜索任意一个关键字,比如说:水果,得到如下的界面 分析: 1.百度图片搜索结 ...

  6. python3爬取1024图片

    这两年python特别火,火到博客园现在也是隔三差五的出现一些python的文章.各种开源软件.各种爬虫算法纷纷开路,作为互联网行业的IT狗自然看的我也是心痒痒,于是趁着这个雾霾横行的周末瞅了两眼,作 ...

  7. python3 requests+bs4爬取某网页MM图片

    python3 requests+bs4爬取某网页MM图片 原理: 将所要抓取的首页分标题及地址保存到字典,遍历字典,对每一个标题下的所有分页进行抓取 import requests from bs4 ...

  8. python爬取图片-Python爬取网页中的图片(搜狗图片)详解

    前言 最近几天,研究了一下一直很好奇的爬虫算法.这里写一下最近几天的点点心得.下面进入正文: 你可能需要的工作环境: Python 3.6官网下载 本地下载 我们这里以sogou作为爬取的对象. 首先 ...

  9. python爬虫知乎图片_python爬虫(爬取知乎答案图片)

    python爬虫(爬取知乎答案图片) 1.⾸先,你要在电脑⾥安装 python 的环境 我会提供2.7和3.6两个版本的代码,但是本⽂只以python3.6版本为例. 安装完成后,打开你电脑的终端(T ...

  10. python3爬取巨潮资讯网站年报数据

    python3爬取巨潮资讯网站年报数据 2018年年底巨潮资讯http://www.cninfo.com.cn改版了,之前实习生从网上找的脚本不能用了,因此重新修改了下爬取脚本.最初脚本的原链接忘了, ...

最新文章

  1. UVA12299 线段树水水水,但别乱开空间= =
  2. leetcode 566. 重塑矩阵(Java版,坐标转换)
  3. python编辑邮件格式_python发送邮件模板
  4. 【Java】关键词assert的使用
  5. iOS静态库.a文件制作和导入使用
  6. android打造一个简单的欢迎界面
  7. 5.12 CopyNet和 Pointer-Generator Net 复制机制和指针-生成器网络
  8. 信息技术导论——信息和信息系统习题整理
  9. 修改dataV轮播表背景图
  10. Android 吉字节问题
  11. Trading on Sentiment
  12. 【考研数学】琴生不等式
  13. 油菜花王国(并查集)
  14. NFT新范式,OKALEIDO创新NFT聚合交易生态
  15. C++定时器CTimer的实现
  16. discuz!Q免登陆蓝天采集器api发布模块
  17. postgrepSQL
  18. 【产业互联网周报】三家量子计算初创企业宣布融资,华为公开量子密钥相关专利;钉钉高调押注低代码,腾讯云低码平台开启公测...
  19. vue之div让文字内容水平垂直居中
  20. 【广告算法工程师入门 5】百度搜索引擎变现策略指标体系

热门文章

  1. 全栈云服务是个什么东东?!
  2. 初学python爬虫心得(豆瓣电影top250)
  3. python列表反向查询_Python反向索引查询
  4. 2018再见|2019你好
  5. PySide6官方教程 循序渐进学好Qt for Python
  6. 迅捷pdf转换器完美解决如何将pdf转换成word问题
  7. 北方直播卖货搞钱“第一城“,竟然是临沂,200万人发家快手电商
  8. Tomcat启动缓慢 Creation of SecureRandom instance for ... 花费时间过长的解决方法
  9. fastq文件转化成bam文件
  10. HTML---复选框默认打钩