22. js2py和selenium初探

本文介绍了Python中执行JavaScript代码的js2py库,讲解了其安装与快速入门,并探讨了动态HTML技术,包括爬虫与反爬虫策略以及AJAX的基础。进一步,文章详细阐述了Selenium与chromedriver如何配合获取动态数据,以及无头浏览器Phantomjs的入门知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. js2py简介

1.1 js2py模块使用

  • Python中执行js代码,通常用2个库:js2py,pyexecjs
  • js2py是纯Python实现的库,用于在Python中运行js代码,本质上是将js代码翻译成Python代码
  • js2py安装:pip install js2py

1.2 快速入门

import js2py
js2py.eval_js('console.log("hello world")')
func_js="""
function add(a,b){
	return a+b
}
"""
add = js2py.eval_js(func_js)
print(add(1, 2))

js代码翻译

import js2py
print(js2py.translate_js("console.log('hello world')"))
# 将js文件翻译成python脚本
js2py.translate_file('test.js','test.py')

js代码中使用函数

import js2py
# 在js中导入python模块并使用
# 使用pyimport programmer
js_code = """
pyimport requests
console.log('导入成功');
var response = requests.get('http://www.baidu.com');
console.log(response.url);
console.log(response.content);
"""
js2py.eval_js(js_code)

2. 动态HTML技术了解

2.1 爬虫和反爬虫的斗争

在这里插入图片描述
爬虫建议:

  • 尽量少次数的请求网站,保存获取的HTML,供差错和重复使用
  • 关注网站的所有类型页面:APP和H5页面
  • 多伪装:代理IP,随机请求头
  • 利用多线程分布式:在不被发现的情况下,尽可能地提高速度

2.2 ajax介绍

动态了解HTML技术

  • js:全拼是javaScript,和Java没有关系的一种独立编程语言,也是最常用的一种脚本语言,可以收集用户的跟踪数据,不需要重新载入页面,直接提交表单,在页面嵌入多媒体文件,运行网页。
  • JQuery:是一个快速简洁的JavaScript框架,封装了常用功能代码
  • ajax:可以使用网页实现异步更新,在不重新加载网页情况下,对网页的某部分实现更新

获取ajax数据的方式
1.直接分析ajax调用的接口,通过代码请求这个接口
2.使用Seleum+chromedriver模拟浏览器方法获取

方式优点缺点
分析接口直接可以请求到数据,不需要做解析工作,代码量少性能高分析接口比较复杂,特别是对一些通过js混淆的接口,需要一定的js功底,容易被发现是爬虫
seleum直接模拟浏览器的行为,浏览器能请求到的,seleum也能请求到,稳定性高代码量多,性能差

3. Seleum+chromedriver获取动态数据

3.1 Seleum介绍

  • Seleum是一个web自动化测试工具,最初是为了网站自动化测试而开发的,seleum可以直接在浏览器上运行,支持所有主流的浏览器,可以接受指令,让浏览器自动加载页面,获取需要的数据,甚至是网页截图
  • chromedriver是一个驱动Chrome浏览器的驱动程序,使用这个才能驱动浏览器。针对不同的浏览器有不同的driver
  • Chrome:https://sites.google.com/a/chromium.org/chromedriver/downloads
  • Firefox:https://github.com/mozilla/geckodriver/releases
  • Edge:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
  • Safari:https://webkit.org/blog/6900/webdriver-support-in-safari-10/
  • 下载chromedriver:安装总结:
    • https://www.jianshu.com/p/a383e8970135
    • 安装Selenium:pip install selenium

3.2 Phantomjs入门

  • 无头浏览器: 一个完整的浏览器内核,包括js引擎分析,渲染引擎,请求处理等,但是不包括显示和用户交互的页面浏览器
  • Phantomjs案例:
# 1.加载网页
from seleum import webdriver
driver = webdriver.PhantomJS("安装目录")
driver.get("https://www.baidu.com")
driver.save_screenshots("baidu.png")

# 2. 定位和操作
driver.find_element_by_id("kw").send_keys("长城")
driver.find_element_by_id("su").click()

# 3. 查看请求信息
driver.page_source
driver.get_cookies()
driver.current_url

# 4. 退出
driver.quit()

seleum实例介绍

from seleum import webdriver
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
driver.quit()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值