美文网首页
python js2py和 selenium

python js2py和 selenium

作者: 山高路陡 | 来源:发表于2020-08-04 14:59 被阅读0次

js2py和 selenium

js2py

  • 简介

    • js2py是纯python实现的库,用于在python中运行js代码,本质上是将js代码翻译成python代码
  • 用法

    • 在python中使用js函数

      • import js2py
        
        js_add = """
        function add(a,b){
            return a+b
        }
        """
        py_add = js2py.eval_js(js_add)
        print(py_add(1,2))
        # 变量="""js函数"""
        # 变量1 = js2py.eval_js(变量), 将js函数翻译成python函数
        # 调用变量1
        js_var = """
        var a = 'hello world'
        """
        py_var = js2py.eval_js(js_var)
        print(py_var)
        
    • js代码翻译

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

动态html技术

  • 爬虫思路总结
    • 1 准备目标url
      • 页码总数明确,找到页面的规律来获取url
      • 页码总数不明确,如果url比较少可以放在列表中遍历。通过xpath来提取页码
    • 2 向目标的url发送请求
      • 随机添加UA
      • 代理IP
      • 添加cookie
    • 3 提取数据
      • 确定数据位置
        • 数据在当前的url当中我们直接发起请求
        • 数据不在当前url中
          • 通过network来分析数据
          • 通过search来查询我们需要的数据
      • re,xpath,bs4
    • 4 保存数据
      • html,txt,csv
      • 数据库mysql mongodb redis
  • 爬虫建议

    • 尽量减少请求次数

      • 保存获取到的HTML,供查错和重复使用
    • 关注网站的所有类型的页面

      • H5页面
      • APP
    • 多伪装

      • 代理IP
      • 随机请求头
    • 利用多线程分布式

      • 在不被发现的情况下我们尽可能的提高速度
  • ajax基本介绍

    • 动态了解HTML技术

      • JS

        • 是网络上最常用的脚本语言,它可以收集用户的跟踪数据,不需要重载页面直接提交表单,在页面嵌入多媒体文件,甚至运行网页
      • jQuery

        • jQuery是一个快速、简介的JavaScript框架,封装了JavaScript常用的功能代码
      • ajax

        • ajax可以使用网页实现异步更新,可以在不重新加载整个网页的情况下,对网页的某部分进行更新
    • 获取ajax数据的方式

      1.直接分析ajax调用的接口。然后通过代码请求这个接口。

      2.使用Selenium+chromedriver模拟浏览器行为获取数据

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

    • from selenium import webdriver
      import time
      driver = webdriver.PhantomJS()
      
      # 打开网站
      driver.get('https://www.baidu.com/')
      # 定位操作和输入内容
      driver.find_element_by_id('kw').send_keys('中国')
      # 点击搜索
      driver.find_element_by_id('su').click()
      
      # time.sleep(10)
      # 网站截屏
      # driver.save_screenshot('baidu.png')。
      
      # 查看请求的url地址
      print(driver.current_url)
      
      # 查看网页源码
      print(driver.page_source)
      
      
  • selenium快速入门

    • from selenium import webdriver
      import time
      driver = webdriver.Chrome()
      driver.get('https://www.baidu.com')
      driver.find_element_by_id('kw').send_keys('中国')
      driver.find_element_by_id('su').click()
      # 窗口最大化
      driver.maximize_window()
      # 窗口最小化
      driver.minimize_window()
      
      time.sleep(4)
      # 推出当前窗口
      driver.close()
      # 推出浏览器
      time.sleep(2)
      driver.quit()
      
      

相关文章

网友评论

      本文标题:python js2py和 selenium

      本文链接:https://www.haomeiwen.com/subject/ycnvrktx.html