课堂笔记-爬虫-selenium模块0

16 篇文章 0 订阅

课堂笔记

1. js2py简介

1.1 js2py模块使用

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

1.2 快速入门

import js2py
js2py.eval_js('console.log("hello wrold")')
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语法
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,供查错和重复使用
• 关注网站的所有类型的页面
• H5页面
• APP
• 多伪装
• 代理IP
• 随机请求头
• 利用多线程分布式
• 在不被发现的情况下我们尽可能的提高速度

2.2 ajax基本介绍

动态了解HTML技术
• JS
• 是网络上最常用的脚本语言,它可以收集用户的跟踪数据,不需要重载页面直接提交表单,在页面嵌入多媒体文件,甚至运行网页
• jQuery
• jQuery是一个快速、简介的JavaScript框架,封装了JavaScript常用的功能代码
• ajax
• ajax可以使用网页实现异步更新,可以在不重新加载整个网页的情况下,对网页的某部分进行更新
获取ajax数据的方式
1.直接分析ajax调用的接口。然后通过代码请求这个接口。
2.使用Selenium+chromedriver模拟浏览器行为获取数据
方式
优点
缺点
分析接口
直接可以请求到数据。不需要做一些解析工作。代码量少,性能高
分析接口比较复杂,特别是一些通过js混淆的接口,要有一定的js功底。容易被发现是爬虫。
selenium
直接模拟浏览器的行为。浏览器能请求到的,使用selenium也能请求到。爬虫更稳定。
代码量多。性能

3. Selenium+chromedriver获取动态数据

3.1 Selenium 介绍

• selenium是一个web的自动化测试工具,最初是为网站自动化测试而开发的,selenium可以直接运行在浏览器上,它支持所有主流的浏览器,可以接收指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏
• chromedriver是一个驱动Chrome浏览器的驱动程序,使用他才可以驱动浏览器。当然针对不同的浏览器有不同的driver。以下列出了不同浏览器及其对应的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://npm.taobao.org/)
• 安装总结:https://www.jianshu.com/p/a383e8970135
• 安装Selenium:pip install selenium

3.2 Phantomjs快速入门

无头浏览器:一个完整的浏览器内核,包括js解析引擎,渲染引擎,请求处理等,但是不包括显示和用户交互页面的浏览器

Phantomjs案例
# 1.加载网页
from selenium import webdriver
driver = webdriver.PhantomJS("安装目录")
driver.get("https://www.baidu.com")
driver.save_screenshot("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() 

3.3 selenium快速入门

from selenium import webdriver
# 实例化浏览器
driver = webdriver.Chrome()
# 发送请求
driver.get('https://www.baidu.com')
# 退出浏览器
driver.quit()
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值