Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式、快速动态网页应用的网页开发技术,无需重新加载整个网页的情况下,能够更新部分网页的技术。

通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

就是很多网站都有下拉加载,这时会加载更多数据,但是不会跳转界面,这就是Ajax加载过程。这时直接用requests请求是无法获取有效数据的。

目录:

1、准备环境

2、Ajax长什么样

3、分析请求

4、获取数据

目标网站:

http://quote.eastmoney.com/center/gridlist.html#hs_a_board

1、准备环境

首先要确保安装好请求库requests,若没有安装可以参考前面的文章——爬虫开发环境部署

2、Ajax长什么样

这个网站点击下一页是不会跳转网页的,所有的数据都会在原有的界面展示。这就是使用了Ajax的网站,像下拉加载这些都采用了Ajax。

3、分析请求

打开开发者工具,这里以Chrome浏览器为例

在Elements选项卡中可以查看网页的源代码,这里没有我们要寻找的目标,切换至Network选项卡

请求太多了先清空请求,点击下一页

可以看到多了两个请求,点击第一个请求查看详细信息

这里切换到Response选项卡查看返回的数据

数据被压缩成一行了,点击格式化方便查看

可以发现网页展示的数据就是从这个请求获得的,返回Headers选项卡查看url

把url挑出来

http://10.push2.eastmoney.com/api/qt/clist/get?cb=jQuery112404011455193932689_1586401605072&pn=2&pz=20&po=1&np=1&ut=bd1d9ddb04089700cf9c27f6f7426281&fltt=2&invt=2&fid=f3&fs=m:0+t:6,m:0+t:13,m:0+t:80,m:1+t:2,m:1+t:23&fields=f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152&_=1586401605111

这是第二页的url

跳出第三页的url看看

http://10.push2.eastmoney.com/api/qt/clist/get?cb=jQuery112404011455193932689_1586401605072&pn=3&pz=20&po=1&np=1&ut=bd1d9ddb04089700cf9c27f6f7426281&fltt=2&invt=2&fid=f3&fs=m:0+t:6,m:0+t:13,m:0+t:80,m:1+t:2,m:1+t:23&fields=f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152&_=1586401605265

可以看到只有参数pn变了

代码如下:

for i in range(197):url = 'http://60.push2.eastmoney.com/api/qt/clist/get?cb=jQuery112408744624686429123_1578798932591&pn=' '%d&pz=20&po=1&np=1&ut=bd1d9ddb04089700cf9c27f6f7426281&fltt=2&invt=2&fid=f3&fs=m:0+t:6,m:0+t:13,m:' '0+t:80,m:1+t:2,m:1+t:23&fields=f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,' 'f23,f24,f25,f22,f11,f62,f128,f136,f115,f152&_=1586266306109' % i

打开url看看内容

用正则表达式把我们想要是数据挑出来就好了

这里传入网页源代码,获取收盘价、成交量、股票代码、名称、最高股价、最低股价、开盘价

def get_stock_data(text):"""获取股票代码、名称、PE"""com = re.compile('"f2":(?P<end>.+?),.*?"f6":(?P<volume>.+?),.*?"f12":"(?P<number>.+?)",.*?"f14":"(?P<name>.+?)"'',.*?"f15":(?P<max>.+?),.*?"f16":(?P<min>.+?),.*?"f17":(?P<start>.+?),', re.S)ret = com.finditer(text)for i in ret:yield {'number': i.group('number'),'name': i.group('name'),'start': i.group('start'),'max': i.group('max'),'min': i.group('min'),'end': i.group('end'),'volume': i.group('volume')}

觉得写的不错顺便点个赞呗

ajax 关闭弹窗并跳转到url_Python 爬虫 | Ajax数据爬取相关推荐

  1. python下载图片、已知url_python 爬虫之requests爬取页面图片的url,并将图片下载到本地...

    import requestsfromlxml import etree import time import os import re requests=requests.session() web ...

  2. 简单爬虫Ajax数据爬取——今日头条图片爬取

    一.Ajax简介 什么是Ajax? Ajax 即"Asynchronous Javascript And XML"(异步 JavaScript 和 XML),是指一种创建交互式网页 ...

  3. Python3 爬虫学习笔记 C03 【Ajax 数据爬取】

    Python3 爬虫学习笔记第三章 -- [Ajax 数据爬取] 文章目录 [3.1]Ajax 简介 [3.2]解析真实地址提取 [3.1]Ajax 简介 Ajax - Asynchronous Ja ...

  4. 携程ajax,Python爬虫实战之爬取携程评论

    一.分析数据源 这里的数据源是指html网页?还是Aajx异步.对于爬虫初学者来说,可能不知道怎么判断,这里辰哥也手把手过一遍. 提示:以下操作均不需要登录(当然登录也可以) 咱们先在浏览器里面搜索携 ...

  5. 《PYTHON3网络爬虫开发实践》——第六章 Ajax数据爬取

    第六章 Ajax数据爬取 有时候我们在用requests抓取页面的时候,得到的结果可能和在浏览器中看到的不一样:这是因为requests 获取的都是原始的HTML文档,而浏览器中的页面则是经过Java ...

  6. (五) 爬虫教程 |Ajax 数据爬取

    一.前言 有时候我们在用 requests 抓取页面的时候,得到的结果可能和在浏览器中看到的不一样:在浏览器中可以看到正常显示的页面数据,但是使用 requests 得到的结果并没有,这是因为requ ...

  7. Python爬虫——Ajax数据爬取

    前言 有时候我们在用requests抓取页面的时候,得到的结果可能和在浏览器中看到的不一样,在浏览器中可以看到正常显示的页面数据,但使用requests得到的结果并没有.这是因为在requests获得 ...

  8. 爬虫:Ajax数据爬取

    目录 1.什么是Ajax 1.1 实例的引入 1.2 基本原理 2.Ajax分析方法 1.查看请求 2.过滤请求 3.Ajax结果提取 1.分析请求 2.分析响应 3.例子 我们在用 requests ...

  9. python爬虫基础Ⅱ——Ajax数据爬取、带参请求:QQ音乐歌单、QQ音乐评论

    文章目录 基础爬虫部分Ⅱ Ajax技术 json 1. Network 2. XHR怎么请求? 3. 什么是json? 4. json数据如何解析? 带参数请求 1. 复习 2. params 3. ...

  10. ajax headers 参数有什么用_动态爬虫(ajax)-爬取bilibili热门视频信息

    前言 使用python爬虫爬取bilibli每日热门视频的数据 使用的第三方软件包括requests.my_fake_useragent 一.页面分析 在进行爬虫之前,我们先要对要爬取的页面进行分析, ...

最新文章

  1. 定义const变量是不可以赋值_定义好 const 变量
  2. umi搭建react+antd项目(一)环境配置
  3. 腾讯云TStack,带着“数据中心”游云南
  4. 中英翻译(基于百度翻译)
  5. 厉害了,Servlet3的异步处理机制
  6. [转帖]关于win7共享的问题和解答
  7. Nginx源码分析 - HTTP模块篇 - HTTP Request解析过程(22)
  8. Jxls异常 Cannot load XLS transformer. Please make sure a Transformer impleme
  9. java抓取豆瓣网页内容_爬取豆瓣网页上的电影(包括图片,评分,和简介等)
  10. masm5.0与masm32
  11. [uboot 移植]uboot 基础知识
  12. 网站搭建niushop系统,全面搭建,打包app,h5详细教程
  13. 搜狗站长平台没有sitemap的接口无法提交sitemap?该怎么提交?【已解决】
  14. [解决]Converting circular structure to JSON
  15. 网络工程师——Private VLAN
  16. 如何利用CCleaner快速查找重复文件?
  17. JUC-BlockingQueue二
  18. 360doc个人图书馆解决复制问题
  19. php nl2p,PHP函数nl2br()与自定义函数nl2p()换行用法分析,nl2brnl2p_PHP教程
  20. Cocos creator 学习笔记(2)

热门文章

  1. SCVMM 2012 部署测试之五向SCVMM中添加Hyper-V主机
  2. iOS网络编程-ASIHTTPRequest小例子-数据请求队列
  3. 在mobile5.0上实现滑动效果控件
  4. OpenLayers学习入门篇
  5. 微信小程序背景音乐的调试
  6. CentOS7-下搭建Maven私服Nexus环境
  7. 一个时代的落幕!继苹果、火狐、Linux Lite之后,微软也放弃Flash
  8. java打印等腰三角形_为什么大家都说Java中只有值传递?
  9. securecrt批量登录linux,SecureCRT批量配置使用会话key
  10. java.lang.UnsatisfiedLinkError: JNA support (com/sun/jna/android-arm/libjnidispatch.so) not found