分析ajax请求格式,模拟发送http请求,从而获取网页代码,进而分析取出需要的数据和图片。这里分析ajax请求,获取cosplay美女图片。

登陆今日头条,点击搜索,输入cosplay


下面查看浏览器F12,点击XHR,这里能截取ajax请求,由于已经请求过该页面,所以点击F5,刷新,如下图

下面我们点击name下的链接,查看headers看到请求信息

可以看到请求的url为
https://www.toutiao.com/search_content/?offset=0&format=json&keyword=cosplay&autoload=true&count=20&cur_tab=1&from=search_tab&pd=synthesis
offset为0,表示当前页面的偏移量,我试着向下滑动页面,name下加载出很多连接,offset每次递增20,keyword为cosplay,是我们搜索的关键词,count表示图集的数量,其他的都不变。
所以我们可以构造一个http请求,包含上面的格式。接下来看看preview的内容

data就是页面加载出来的图片文章列表
点击其中一个data,查看

可以看得出图片列表和large图片相差的就是list和large的区别,如
“http://p1-tt.bytecdn.cn/list/97e000601ee89d997af"为缩略图
“http://p1-tt.bytecdn.cn/large/97e000601ee89d997af"为大图
所以只需将list替换为larg即可。之后发送http请求,获取对应的图片即可。下面为完整代码

import requests
import re
import time
from pyquery import PyQuery as pq
from urllib.parse import urlencode
import os
USER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0'
COOKIES = r'UM_distinctid=167005cc741184-02d14e2fd49b05-10724c6f-1fa400-167005cc74263a; uuid="w:5a4841d5dda248c389f83e5b9c57608a"; sso_uid_tt=45b83f6c549dabd4248c611aa98222d3; toutiao_sso_user=4853db5c812f7bcb367cdcbef0967d06; sso_login_status=1; login_flag=54c7da4daac99058f7b6e4b8975cca01; sessionid=5e86f286970804ed8fd11abf0bf328e4; uid_tt=dd5e177a1cbf9746eb634307d64afd22; sid_tt=5e86f286970804ed8fd11abf0bf328e4; sid_guard="5e86f286970804ed8fd11abf0bf328e4|1541899310|15552000|Fri\054 10-May-2019 01:21:50 GMT"; tt_webid=6622406673465067021; WEATHER_CITY=%E5%8C%97%E4%BA%AC; cp=5BE7386A29798E1; tt_webid=75478811657; __tasessionId=qwly22e8r1541906736076; CNZZDATA1259612802=1520919144-1541896080-https%253A%252F%252Fwww.baidu.com%252F%7C1541901480; csrftoken=b970f054ea259eb162e572217e6756ca'
REFER = 'https://www.toutiao.com/search/?keyword=cosplay'
class AjaxScrapy(object):def __init__(self,pages=1):try:self.m_session = requests.Session()self.m_headers = {'User-Agent':USER_AGENT,'referer':REFER,}self.m_cookiejar = requests.cookies.RequestsCookieJar()self.dirpath = os.path.split(os.path.abspath(__file__))[0]for cookie in COOKIES.split(';'):key,value = cookie.split('=',1)self.m_cookiejar.set(key,value)except:print('init error!!!')def getOffset(self,index=0):try:params = {'offset':str(20*index),'format':'json','keyword':'cosplay','autoload':'true','count':'20','cur_tab':'3','from':'gallery',}httpaddr = 'https://www.toutiao.com/search_content/?'+urlencode(params)req = self.m_session.get(httpaddr,headers=self.m_headers, cookies=self.m_cookiejar, timeout=5)if req.status_code != 200:return Noneres = req.json()if('data' not in res.keys()):return Nonefor item in res.get('data'):if('title' not in item.keys()):continueif('image_list' not in item.keys()):continuetitlenamelist=item['title'].split('/')titlename = titlenamelist[-1]savedir=os.path.join(self.dirpath,titlename)print('正在抓取'+titlename+'.........')if(os.path.exists(savedir) == False):os.makedirs(savedir)imagelist = item.get('image_list')for imag in imagelist:if 'url' not in imag.keys():continue#print(imag['url'])image1,image2=imag['url'].split('list')image3=imag['url'].split('/')[-1]imagepath=os.path.join(savedir,image3+'.jpg')if(os.path.exists(imagepath)):continueimageaddr = 'http:'+image1+'large'+image2imagedata=self.m_session.get(imageaddr,timeout=5)with open (imagepath,'wb')as f:f.write(imagedata.content)print('抓取'+titlename+'成功!!!.........')time.sleep(1)return req.json()except:print('get over view error')return Noneif __name__ == "__main__":try:asscrapy = AjaxScrapy()for i in range(0,5):res = asscrapy.getOffset(i)if(res == None):continue#print(type(res))except:print('scrapy exception!')pass

更多源码下载
https://github.com/secondtonone1/python-/tree/master/pythoncookie
个人博客
https://www.limerence2017.com
谢谢关注我的公总号:

转载于:https://www.cnblogs.com/secondtonone1/p/10127993.html

python学习(26)分析ajax请求抓取今日头条cosplay小姐姐图片相关推荐

  1. php抓取今日头条,分析Ajax来抓取今日头条街拍美图

    一.介绍 还是根据崔大大的视频来码的文章,不得不说,抓取文件并下载下来比抓取网页内容信息复杂多了 二.流程 目标站点分析 用浏览器打开今日头条输入'街拍',打开审查元素,点击'图集' 1.首先我们要找 ...

  2. python爬虫---实现项目(二) 分析Ajax请求抓取数据

    这次我们来继续深入爬虫数据,有些网页通过请求的html代码不能直接拿到数据,我们所需的数据是通过ajax渲染到页面上去的,这次我们来看看如何分析ajax 我们这次所使用的网络库还是上一节的Reques ...

  3. 爬虫实战:要不是热爱学习,谁会爬小姐姐。分析Ajax来爬取今日头条街拍美图(python)

    有些网页我们请求的html代码并没有我们在浏览器里看到的内容. 因为有些信息是通过Ajax加载并通过JavaScript渲染生成的. 一.目标站点分析 头条街拍 查看的Ajax请求 选择network ...

  4. python爬今日头条组图_(python爬虫之)ajax解析爬取今日头条组图并下载

    首先吐槽一波csdn配色真直男,囧 此次任务需要注意的是: 用request.get方法的时候要加cookie, 网页源代码也改动了,详情页进入后不是一个json数据包,是一个html文档. 以及其它 ...

  5. ajax动态抓取今日头条街拍美图

    1.分析网站源码. 网站是局部动态变化,offset变化加载内容,变化范围为0,20,40··· 首先要获取索引页代码数据,定义索引页,由于是ajax请求,offset根据索引变化0.20.40··· ...

  6. (廿五)Python爬虫:抓取今日头条图片

    此次完成抓取今日头条动漫图片,并将图片保存在本地.最后结果如下: 分析 打开今日头条首页搜索"动漫",查看源代码我们会发现只包含少量的HTML,所以可以判断页面是AJAX加载的.打 ...

  7. Python爬取不羞涩网小姐姐图片——BeautifulSoup应用

    引言 今年提倡原地过年,相信很多朋友都没有回家过年,像我就被迫留在深圳过年了,无聊之余只能去看看电影爬爬山.今天给大家带来一个打发无聊时光的案例,用Python爬取不羞涩网小姐姐图片,并保存到本地,老 ...

  8. Python爬虫实战02:分析Ajax请求并抓取今日头条街拍

    1 目标网站分析 首先我们打开今日头条网站,搜索 街拍,点击图集,这里每就是我们要爬取的目录,我们称为索引页.1 点开一个标题,进去,称为详情页.2这里面的图是我们所要爬取的.比如这里可以点击图片,共 ...

  9. 分析Ajax抓取今日头条街拍美图

    声明:此篇文章主要是观看静觅教学视频后做的笔记,原教程地址https://cuiqingcai.com/ 实现流程介绍 1.抓取索引页内容:利用requests请求目标站点,得到索引网页HTML代码, ...

最新文章

  1. Linux拥有良好的界面
  2. 谷歌全新轻量级新模型ALBERT刷新三大NLP基准
  3. 测试电子负载用于无线充电系统的功能和精度
  4. logback日志模板与详解
  5. Systemd-CentOS7系统服务介绍与CentOS6服务对比
  6. mysql 错误 0152_SP2-1503 SP2-0152 错误解决
  7. JSP2.0中的表达式语言(EL表达式)
  8. Python CheckiO 题解系列 丨 博客目录索引
  9. [操作系统] 线程和进程的简单解释
  10. 添加文件夹语音_微信语音导出方法大全,微信群语音转发只需3步
  11. 【每日算法Day 72】谷歌面试题:又双叒叕是位运算,最详细的自动机推导过程...
  12. 马上上线!谷歌与苹果联手抗疫,打造基于蓝牙设备的接触史回溯 | 凌云时刻...
  13. PSP3000破解教程
  14. MOSEK Fusion Model
  15. BZOJ3533: [Sdoi2014]向量集
  16. 曾是谷歌程序员,抛下百万年薪创业,4年成就7亿用户,今身价百亿!
  17. system.IO.FileNotFoundException: 未能加载文件或程序集
  18. 阿尼玛,男性的女性向
  19. RocketMQ 解决 No route info of this topic 异常步骤
  20. http 状态码查询

热门文章

  1. java二级的等级之分_计算机二级证书的等级划分
  2. 万卷书 - 醉酒 Drunk
  3. 作为Java程序员,对日java开发培训
  4. 论文笔记: Black Re-ID 黑衣人重识别
  5. 求二叉树两个结点的最近公共祖先
  6. 使用HCL模拟器配置VRRP相关项目
  7. Ps多边形套索工具,按过delete键之后,下一个点不出来,也无法取消
  8. Windows XP万能钥匙
  9. OpenJudge百炼-2964-日历问题-C语言-日期处理
  10. 《数据结构》爆1133类和1134同学链接