利用phantomjs+selenium抓取fund.eastmoney.com/fund.html网站第二页js生成的页面

【python】python如何运行js代码,PyExecJS模块轻松搞定 逆向的概念:看着别人的加密解密逻辑,用我们的程序(python, java, c, nodejs, javascript等)把这个过程还原出来 后面就会发现有些案例单独用python根本搞不了,其他语言也可以。这种方式,当js代码中有中文,该异常出现的场景为在 Windows 电脑下使用 Python execjs 运行指定的 JS 文件,但 JS 文件中包含中文。#编译即将被执行的js代码对应的文件,返回上下文对象ctx(将js文件中的代码读取出来,被compile进行编译) 阅读详情

http://blog.youkuaiyun.com/github_26672553/article/details/78550623
前面我们了解过:利用PyExecJS包来执行js,然后直接拿到了基金网站第二页的字典数据。

现在和之前的不一样,我们利用phantomjs和selenium这2个包,模拟人工访问第二页,拿到第二页的网页源代码。

这里写图片描述

1、首先来肉眼分析第二页源码的特征。

用户点击”第二页”其实就是点击value=2的span元素。
当”第二页”加载了,span元素会多一个at的class。

2、找到”第二页”的按钮元素(也就是span),模拟点击

# coding: utf-8

from selenium import  webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions

driver = webdriver.PhantomJS(executable_path=r"你phantomjs可执行文件绝对路径")

# 请求一个网址
driver.get("http://fund.eastmoney.com/fund.html")

# 得到点击js的span
pageBtn = driver.find_element_by_id("pager").find_element_by_xpath("span[@value=2]")
pageBtn.click()

3、判断是否已经是”第二页”了,我们需要自定义一个函数来完成

# 第二页的span元素是否有"at"这个class
def isAt(driver):
    return driver.find_element_by_id("pager")\
        .find_element_by_xpath("span[@value=2]")\
        .get_attribute("class").find("at") != -1

WebDriverWait(driver,20).until(isAt)

print(driver.page_source) # 打印源码

最后打印源码确实是第二页的内容。

既然我们可以把第二页的网页内容抓取到,如何抓取第三页、第四页。。。
利用循环啊。
找到共有多少页,然后循环抓取就行了。

page_text = driver.find_element_by_id("pager").find_element_by_xpath("span[@class='nv']").text
total_page = ''.join(filter(str.isdigit,page_text)) # 得到总共有多少页
Apache Doris集群IP变更急救指南:用Docker容器+priority_networks快速恢复FE/BE节点 本文详细介绍了Apache Doris集群在IP变更情况下的应急处理方案,通过Docker容器和priority_networks配置快速恢复FE/BE节点。文章提供了从容器化环境构建、元数据迁移到生产环境切换的全流程指南,帮助运维团队在30分钟内完成集群恢复,显著减少停机时间。 阅读详情

相关推荐

STM32 FOC电机控制:手把手教你用CubeMX配置TIM1中心对齐PWM(含代码避坑)

本文详细解析了STM32 FOC电机控制中TIM1中心对齐PWM的配置方法,涵盖CubeMX图形化设置、HAL库代码调用及常见问题排查。特别针对L6230Q驱动芯片的使能逻辑和死区时间配置提供实用指南,帮助开发者高效实现无刷电机的高性能控制。

weixin_27027459的博客 442

JS逆向--PyExecJS基本用法--网易云音乐逆向思路,node.js安装教程,逆向思路,逆向分析,加密机制,RSA,AES加密算法,加密算法啊破解,js引擎,定位数据包,分析栈结构,无痕窗口

逆向是学习爬虫必不可少的一个部分,JS逆向的掌握可以解决绝大多数网站加密机制,以下就从一个小案例中入手JS逆向吧。在数据加密的情况下,我们通过目标网站的JS数据加密算法,反向推导出该算法的加密过程,这个过程我们称之为JS逆向。上述我们从PyExecJS模块的基本用法开始讲述,到node.js的安装,从逆向第一种思维缺啥补啥,分析了网易云逆向的基本思路。以上就算是逆向的基本入门了,虽然这只是一种比较笨拙的做法,但是它的准确率是比较高的。下一节我会讲述逆向的另外一种思维方式,想要学好逆向,躬体力行才是真!

ohh11的博客 6817

STM32CubeMx配置串口使用printf函数打印数据(HAL库开发)

HAL库开发串口,打印printf

m0_58832575的博客 6286

Pyexecjs-使用python执行JavaScript

Pyexecjs的使用 一,下载 pip install pyexecjs import execjs 二,使用 2.1,使用eval直接执行 import execjs print(execjs.eval('"abc aaa bbb".split(" ")')) ['abc', 'aaa', 'bbb'] # 调用变量名 text = execjs.compile(open(r'text.js').read()) print(text.eval('d')) 2.2,compile加载js,cal

weixin_44038881的博客 6250

噪声整形与过采样实战:从N-bit ADC到DSM的SQNR优化指南

本文深入探讨了噪声整形与过采样技术在DSM(Delta-Sigma调制器)中的应用,重点分析了量化器位数(N)、滤波器阶数(L)和过采样率(OSR)对SQNR优化的影响。通过实战案例和参数协同优化策略,帮助工程师在音频处理和通信系统设计中实现更优的信号质量。

weixin_42561040的博客 339

2-6-1-1 QNX编程入门之进程和线程(一)

文章围绕进程和线程展开介绍。先是将进程类比为房子,线程类比为居住者,阐述其基本概念,如进程占用内存,线程可共享内存。接着讲解同步相关内容,介绍了互斥,线程通过互斥锁来控制对特定资源的访问,像使用浴室一样。还提到优先级,线程按优先级和等待时长来决定获取资源顺序。此外,说明了信号量,以厨房为例,区分计数为 1 和大于 1 的信号情况,且指出信号量可当互斥锁用,但互斥锁是特殊用途信号量,二者存在区别,最后提及后续会介绍其他同步机制。

星原飞火的博客 1323

Python 执行 JS 代码 —— PyExecJS

大家会遇到网页请求数据是经过 JS 处理的,特别是模拟登录时可能有加密请求。而目前绝大部分前端 JS 代码都是经过混淆的,可读性极低,想理解代码逻辑需要花费大量时间。因此不要着急使用 Selenium 暴力解决,毕竟 Selenium 严重拖慢爬虫效率,我们可以尝试使用一些第三方库,来直接执行前端 JS 代码得到处理过后的结果 PyExecJS 这个库主要是将 JS 代码运行在本地的 JS 环境中,优点是我们有多种 JS 环境的选择,官方推荐了 PyV8、Node.js、Phant...

分享我的点点滴滴,在成长路上与你同行! 4429

概率论基础-严士健 第二版 习题与补充1.6答案

概率论基础-严士健 第二版 习题与补充1.6答案 1.不独立。 设有一均匀正八面体,其第1,2,3,4面染红色,第1,2,3,5面染白色,第1,6,7,8面染黑色,现在以A,B,C分别表示投一次正八面体出现红、白、黑的事件,则 P(A)=P(B)=P(C)=12.P(A) = P(B) = P(C) = \frac{1}{2}.P(A)=P(B)=P(C)=21​. P(ABC)=18=P(A)P...

weixin_42341993的博客 2515

Python调用JS代码方法大全

你可以在 Python 中执行 JavaScript 代码,而无需启动一个完整的 JavaScript 解释器。它的目标是提供一种简便的方式,使得在 Python 中嵌入 JavaScript 代码成为可能,特别是对于需要JavaScript 交互的项目而言。是一个 Python 库,用于在 Python 环境中执行 JavaScript 代码。它实际上是对 ExecJS 库的 Python 封装,ExecJS 本身是一个通用的 JavaScript 运行环境的抽象层。以上方法只针对非异步的js代码。

m0_64408930的博客 1万+

BCC Python开发教程&常用BCC工具(一)

这个教程主要目的是展示如何使用python来进行bcc工具开发和编程。教程主要分为两个部分:可观察性和网络。文中的代码片段均都来自于bcc:代码片段的licenses见bcc中具体文件。也可参考bcc开发者手册以及end-users工具教程:。此外bcc还开放有lua接口。

hudongliang2006nb的专栏 2084

Unity事件总线第一篇:为什么你的游戏需要一个事件总线?

本文探讨了游戏开发中常见的跨模块调用导致代码强耦合的问题。通过一个攻击按钮触发角色攻击、怪物掉血和血条更新的案例,分析了直接调用方式带来的维护困难、扩展性差和模块重用性低等弊端。文章提出使用事件总线(Event Bus)作为解决方案,通过发布-订阅模式实现模块解耦。重构后的代码中,各模块只需与事件总线交互,彼此不再直接依赖。这种设计使得新增功能(如音效)无需修改现有代码,大大提高了系统的可维护性和扩展性,同时增强了模块的重用性,完美体现了开闭原则。

qq_46348216的博客 1297

python模块之PyExecJS 执行js代码

PyExecJS是一个Python库,它提供了一种在Python中执行JavaScript代码的方式。它基于ExecJS库,可以使用多个JavaScript运行时(如Node.js、PhantomJS、JScript等)来执行JavaScript代码。使用PyExecJS,您可以在Python环境中执行JavaScript代码,从而利用JavaScript的功能和库。

老衲爱洗头的博客 1352

分布式计算Ray框架:从入门到精通完全教程

想象一下,你有一个机器学习模型要训练,数据集大到让你的笔记本电脑直冒烟;或者你需要并行跑几百个爬虫任务,但线程池和多进程搞得你头晕眼花。传统的单机计算已经hold不住这些场景,分布式计算应运而生。然而,传统的分布式框架(如Hadoop、Spark)要么配置复杂,要么对动态任务支持不佳。这时候,Ray闪亮登场!Ray是一个开源的分布式计算框架,专为高性能、灵活性和易用性而生。它最初由UC Berkeley的RISELab团队开发,目标是让开发者用最少的代码实现分布式任务。无论是数据处理、机器学习,还是仿真任务

大模型大数据攻城狮的专栏 1317

【学习心得】Python好库推荐——PyExecJS

pyexecjs是一个用Python来执行JavaScript代码的工具库,该库支持多种JavaScript运行时环境,如Node.js、PhantomJS、SlimerJS等,允许开发者在Python中无缝地调用和执行JavaScript代码。

qq_39780701的博客 1048

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

python 调用 javascript函数

python 调用 javascript函数 # pip install pyexecjs import execjs # 直接执行 print('execjs.eval:', execjs.eval(' "a、b、c、d、e".split("、") ')) # 先编译、后调用 # 将js文件中的内容读取出来编译即可调用里面的方法了 js_compile = execjs.compile(     """     function add(x, y

weixin_44493841的博客 1765

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

[1286]python执行js代码方法汇总(PyExecJS、Js2Py、py-mini-racer)

在平时爬虫过程中,我们会遇到网站对js文件加密,无法爬取,现在就让我们来了解一下js2py模块,它可以对js文件进行解密。

周小董 4589

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Python调用PyExecJS库运行JavaScript

PyExecJS是从Ruby移植来的ExecJS,自动选择最佳运行环境来执行JavaScript程序。缺点是慢且不完全支持运行环境特性

XerCis的博客 3373

【学习心得】Python调用JS的三种常用方法

在做JS逆向的时候,一种情况是直接用Python代码复现JS代码的功能,达成目的。但很多时候这种方法有明显的缺点,那就是一旦JS代码逻辑发生了更改,你就得重写Python的代码逻辑非常不便。于是第二种情况就出现了,我直接得到你的JS代码片段,用Python去操作JS运行,并得到结果。这种做法的好处在于可以将JS代码看成一个黑盒子,我不关心里面是怎么写的,我只在乎是否输出了正确的结果。

qq_39780701的博客 4044

[284]Python使用execjs执行js

总注:使用execjs的难点并不是在execjs这个库, 而是解析JS的过程, 因为没有浏览器的环境, 没有加密源码的依赖。从成千上万行的JS中择出想要的内容,可能是一段孤零零的JS函数,也可能是从几个JS文件去找出各自找出一段JS代码, 并可以通过execjs顺利执行, 这并非易事。需要注意的是: 个别的JS语句, 用execjs返回的结果跟浏览器环境返回的结果是有区别的, 以下是浏览器环境返回的结果。注: 在切换环境时, 当环境不存在不会报错, 会使用默认的环境。另外需要注意的是, 两种方式的区别。

周小董 3万+

浅谈PyExecJS模块

PyExecJS是一个 Python 模块,用于在 Python 中执行 JavaScript 代码。

Bruce_xiaowei的博客 704

【逆向爬虫】Python中执行调用JS的多种方法汇总_python 执行js

1.PyExecJS方法PyExecJS 是一个简单易用的库,它提供了一个通用的接口来执行 JavaScript代码,可以在多个JavaScript 运行时环境下工作,包括 Node.js、PhantomJS。return e;i++)

Python栈 2361

python 爬虫调用 js 的库之 execjs

针对现在大部分的网站都是使用 js 加密,js 加载的,并不能直接抓取出来,这时候就不得不使用一些三方类库来执行 js 语句。

caribbean666的博客 6846

【逆向爬虫】Python中执行调用JS的多种方法汇总

1.PyExecJS方法PyExecJS 是一个简单易用的库,它提供了一个通用的接口来执行 JavaScript代码,可以在多个JavaScript 运行时环境下工作,包括 Node.js、PhantomJS。var e;return e;

m0_48891301的博客 5799

python执行js之pyexecjs

执行js的三种方法: 1、阅读js代码,将之转成python 2、找到js代码,用python第三方库执行相关代码 python2-pyv8 python3-pyexecjs 3、用selenium驱动浏览器 pyexecjs pip install pyexecjs 使用: ''' 遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 寻找有志同道合的小伙伴,互帮互助...

Python热爱者的博客 1万+

python执行js:node.js、pyExecJS、PyV8、Js2Py

一、简介 测试js代码时在命令行使用node.js,可发现执行过程中的报错信息,Python中使用pyExecJS、PyV8和Js2Py执行js 执行效率:pyExecJS最低,Js2Py最高 执行js代码的复杂度:pyExecJS最高,Js2Py最低,一般混淆代码需要pyExecJS来执行 二、执行代码 1、node.js 安装:Mac:brew install node 使用:node x...

weixin_41074255的博客 3185

【亲测免费】 PyExecJS 使用教程

PyExecJS 是一款基于 Python 的库,它允许开发者方便地在 Python 程序中执行 JavaScript 代码。这个项目灵感来源于 Ruby 中的 ExecJS,旨在简化跨语言调用,使得 Python 开发者能够利用 JavaScript 强大的处理能力,尤其是在处理前端加密或特定数据处理场景中。PyExecJS 自动检测并选择最合适的 JavaScript 运行时环境,如 Node

gitblog_00237的博客 1051
上一篇: 入手爬虫利器:phantomjs+selenium、自动填充文本框、自动点按钮
下一篇: 抓取基金网站N页JS生成的内容(多页)
学习笔记666
博客等级 码龄12年 1047粉丝 1369原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值