原理:动态网页,即用js代码实现动态加载数据,就是可以根据用户的行为,自动访问服务器请求数据,重点就是:请求数据,那么怎么用python获取这个数据了?

浏览器请求数据方式:浏览器向服务器的api(例如这样的字符串:http://api.qingyunke.com/api.php?key=free&appid=0&msg=关键词)发送请求,服务器返回json,然后解析该json,就得到请求数据了

同理:用Python向api发送请求,获得json,解析json,得到数据

即关键在于得到api

api获取:

将鼠标放在上图图示位置,将显示该用户的一些信息,这些信息就是动态加载出来的。当鼠标放在该位置时,浏览器向服务器api发出请求,得到json,再解析便得到下图所示数据

在该网页反键选择检查源代码,按图示点开选项:

然后将鼠标移动到网页界面用户上(箭头位置),会发现右边多出两个请求信息,如图:

点击下面一个,红色方框内的链接,就是要找的api接口

直接用浏览器打开该api即可看到json,如下图

下面用python代码请求该api并解析

import requests

import json

#api

url='https://www.zhihu.com/api/v4/members/wisphilo?include=allow_message%2Cis_followed%2Cis_following%2Cis_org%2Cis_blocking%2Cemployments%2Canswer_count%2Cfollower_count%2Carticles_count%2Cgender%2Cbadge%5B%3F(type%3Dbest_answerer)%5D.topics'

#header的目的是模拟请求,因为该api设置了反爬取

header={

'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36'

}

doc=requests.get(url,headers=header)#发起请求

doc.encoding='utf-8'#设置编码为utf-8

data=json.loads(doc.text)#将json字符串转为json

#根据位置查找数据

print('用户名:',data.get('name'))

print('个人描述:',data.get('headline'))

print('职务:'+data.get('employments')[0].get('job').get('name'))

print('回答:',data.get('answer_count'))

print('文章:',data.get('articles_count'))

print('关注者:',data.get('follower_count'))

另外查找数据最好用在线json格式化再查找,不然很难看出自己要的数据在哪eg:

一般网页的api都有规律可寻,用for循环控制变换字符即可实现自动爬取

上述代码运行结果:

和该界面对照

以上

利用selenium并使用gevent爬取动态网页数据

首先要下载相应的库 gevent协程库:pip install gevent selenium模拟浏览器访问库:pip install selenium selenium库相应驱动配置  https: ...

python爬取动态网页2,从JavaScript文件读取内容

import requests import json head = {"user-agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) ...

Python:将爬取的网页数据写入Excel文件中

Python:将爬取的网页数据写入Excel文件中 通过网络爬虫爬取信息后,我们一般是将内容存入txt文件或者数据库中,也可以写入Excel文件中,这里介绍关于使用Excel文件保存爬取到的网页数据的 ...

selenium抓取动态网页数据

1.selenium抓取动态网页数据基础介绍 1.1 什么是AJAX AJAX(Asynchronouse JavaScript And XML:异步JavaScript和XML)通过在后台与服务器进 ...

R语言爬取动态网页之环境准备

在R实现pm2.5地图数据展示文章中,使用rvest包实现了静态页面的数据抓取,然而rvest只能抓取静态网页,而诸如ajax异步加载的动态网页结构无能为力.在R语言中,爬取这类网页可以使用RSele ...

python爬取某个网页的图片-如百度贴吧

python爬取某个网页的图片-如百度贴吧 作者:vpoet mail:vpoet_sir@163.com 注:随意copy,不用告诉我 #coding:utf-8 import urllib imp ...

Python 爬取单个网页所需要加载的地址和CSS、JS文件地址

Python 爬取单个网页所需要加载的URL地址和CSS.JS文件地址 通过学习Python爬虫,知道根据正式表达式匹配查找到所需要的内容(标题.图片.文章等等).而我从测试的角度去使用Python爬 ...

利用Python爬取朋友圈数据,爬到你开始怀疑人生

人生最难的事是自我认知,用Python爬取朋友圈数据,让我们重新审视自己,审视我们周围的圈子. 文:朱元禄(@数据分析-jacky) 哲学的两大问题:1.我是谁?2.我们从哪里来? 本文 jacky试 ...

爬虫(三)通过Selenium + Headless Chrome爬取动态网页

一.Selenium Selenium是一个用于Web应用程序测试的工具,它可以在各种浏览器中运行,包括Chrome,Safari,Firefox 等主流界面式浏览器. 我们可以直接用pip inst ...

随机推荐

lucene 使用注意

1.建立索引时,忘记writer.close(); 结果: 正常结果:

About Wisdom

All human wisdom is summed up in two words --- wait and hope.人类所有的智慧可以归结为两个词---等待和希望. —— Alexandre D ...

ADO.NET——获取output 和 return值

程序代码 //存储过程 //Create PROCEDURE MYSQL // @a int, // @b int //AS // return @a + @b //GO SqlConnection ...

python学习之路-11 多线程、多进程、协程

python内置队列模块 queue queue的四种队列 q = queue.Queue() # 先进先出队列 q = queue.LifoQueue() # 后进先出队列 q = queue.Pr ...

android系统的图片资源

使用系统的图片资源的好处有,一个是美工不需要重复的做一份已有的图片了,可以节约不少工时:另一个是能保证我们的应用程序的风格与系统一致. 1.引用方式 在源代码*.Java中可以进入如下方式引用: my ...

在dotnetcore的MVC项目中,创建支持 vue.js 的最小工程模板

网上Vue模板不是最新的,我自己做了一个最新的支持 Vue.js 的最小工程模板,方便大家从 Hello world. 入门, 在 VS2017 里学习,并扩展出自己的项目. 下面是创建步骤: 1.在 ...

js switch 用法

//获取星期 //例子1 var day=new Date().getDay(); switch (day) { : x="Today it's Saturday"; break; ...

js 序列化

Python 序列化 字符串 = json.dumps(对象)  对象转字符串 对象 = json.loads(字符串)   字符串转对象 Javascript 字符串 = JSON.stringif ...

更改linux下文件目录权限、拥有者及用户组

在linux中的每个用户必须属于一个组,不能独立于组外.在linux中每个文件有所有者.所在组.其它组的概念 - 所有者 - 所在组 - 其它组 - 改变用户所在的组 所有者 一般为文件的创建者,谁创 ...

python爬取动态网页_python爬取动态网页数据,详解相关推荐

  1. dicom多帧转换_Python解析多帧dicom数据详解

    概述 pydicom是一个常用python DICOM parser.但是,没有提供解析多帧图的示例.本文结合相关函数和DICOM知识做一个简单说明. DICOM多帧数据存储 DICOM标准中关于多帧 ...

  2. python的类和对象_Python面向对象之类和对象实例详解

    本文实例讲述了Python面向对象之类和对象.分享给大家供大家参考,具体如下: 类和对象(1) 对象是什么? 对象=属性(静态)+方法(动态): 属性一般是一个个变量:方法是一个个函数: #类的属性 ...

  3. python模拟登录详细教程_Python模拟登录requests.Session应用详解

    最近由于某些原因,需要用到Python模拟登录网站,但是以前对这块并不了解,而且目标网站的登录方法较为复杂, 所以一下卡在这里了,于是我决定从简单的模拟开始,逐渐深入地研究下这块. 注:本文仅为交流学 ...

  4. python中sort函数字符串_python中的sort方法使用详解

    < Python树莓派编程>--3.3 Python入门 本节书摘来自华章出版社<Python树莓派编程>一书中的第3章,第3.3节,作者:[美]沃尔弗拉姆·多纳特(Wolfr ...

  5. python find的使用方法_Python中的rfind()方法使用详解

    Python中的rfind()方法使用详解 rfind()方法返回所在子str 被找到的最后一个索引,或者-1,如果没有这样的索引不存在,可选择限制搜索字符串string[beg:end]. 语法 以 ...

  6. python语言程序的特点_Python语言概述及其运行机制详解

    即日起,我们将打开一个新的编程世界的大门--Python语言.Python是一种跨平台的计算机程序设计语言.是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新 ...

  7. python编程字典100例_python中字典(Dictionary)用法实例详解

    本文实例讲述了python中字典(Dictionary)用法.分享给大家供大家参考.具体分析如下: 字典(Dictionary)是一种映射结构的数据类型,由无序的"键-值对"组成. ...

  8. python类初始化导入库_Python中optparser库用法实例详解

    本文研究的主要是Python中optparser库的相关内容,具体如下. 一直以来对optparser不是特别的理解,今天就狠下心,静下心研究了一下这个库.当然了,不敢说理解的很到位,但是足以应付正常 ...

  9. python中exchange函数使用_python基于exchange函数发送邮件过程详解

    python基于exchange函数发送邮件过程详解 作者: shuzihua 更新时间:2020-11-06 10:40:35 原文链接 1.Python hasattr() 函数 描述 hasat ...

  10. python对文件的处理_python文件处理fileinput使用方法详解

    这篇文章主要介绍了python文件处理fileinput使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.介绍 fileinput模块 ...

最新文章

  1. 使用Xcode External Build System实现Rust 项目 Capture GPU Frame 在线调试 Metal 2018.12.18
  2. 修正后的SYSTEM_THREADS与SYSTEM_PROCESSES结构体
  3. 域用户组成员 导出_隐私安全,黑客利用Mimikatz提取Windows用户凭证
  4. Python爬取B站弹幕方法介绍
  5. Java 正则表达式 总结
  6. 基于redis分布式锁实现的多线程并发程序
  7. newgrp - 登录到新的用户组中
  8. nyoj 16 矩形嵌套第七届河南省acm省赛H题
  9. VS 2015 卸载所有组件工具
  10. 常用0x000000类型颜色代码表
  11. linux同一台机器安装两台nginx
  12. 聊斋志异中的《陆判》
  13. 2018软工—团队现场编程实战(抽奖系统)
  14. 智商情商哪个重要_智商与情商哪个更重要 辩论
  15. 在html中如何做SEO优化
  16. 一.什么是java面向对象 (小白神器)
  17. 初学Linux服务器管理
  18. php 提取视频中的音频,如何把视频中的音频提取出来
  19. java将字符串内容转换为字节数组
  20. EasyRecovery15数据恢复注意事项及主要功能介绍

热门文章

  1. CocosCreator的H5游戏适配PC端
  2. 使用新版webstorm和Chrome配合,实现实时刷新,可以边写代码边看效果
  3. 英方软件“带病”冲刺科创板,云计算或成数据复制赛道最大变量
  4. MySQL--用Navicat新建数据库
  5. 智慧消防物联网系统解决方案 加速推进消防监测智能化发展
  6. 如何计算sinc函数的定积分?
  7. java对接ntlm,httpclient 实现自动登录NTLM 域验证(sso) .
  8. Python正则表达式实例详解
  9. 1.10 API 和字符串
  10. 与NBA牵手,透露出字节跳动的垂直化野望