爬虫逆向(js逆向)

2023-11-15

异步爬虫的实现方式

- 线程池
- 多任务的异步协程
- 多线程(生产者消费者模型)

线程池

前提
from flask import Flask,render_template
from time import sleep
app = Flask(__name__)

@app.route('/bobo')
def index1():
    sleep(2)
    return render_template('test.html')

@app.route('/jay')
def index2():
    sleep(2)
    return render_template('test.html')

@app.route('/tom')
def index3():
    sleep(2)
    return render_template('test.html')

if __name__ == '__main__':
    app.run(threaded=True)  #实现线程必须加这个



爬取
from multiprocessing.dummy import Pool
from lxml import etree
import time
import requests

start = time.time()
urls = [
    'http://127.0.0.1:5000/jay',
    'http://127.0.0.1:5000/bobo',
    'http://127.0.0.1:5000/tom',
]
开启线程数,实例化一个对象
pool = Pool(3)

#定义回调函数:必须要有一个参数,参数就是列表中的某一个列表元素
def get_request(url):
    page_text = requests.get(url).text
    return page_text
    
#调用map方法,第一个参数是自定义回调函数,第二个是可迭代对象 。回调函数会异步的处理(自定义)列表中的每一个列表元素,然后将返回值传给map,最后返回
page_text_list = pool.map(get_request,urls)

#异步的解析数据
def parse(page_text):
    tree = etree.HTML(page_text)
    data = tree.xpath('//a[@id="feng"]/text()')[0]
    print(data)
pool.map(parse,page_text_list)

print('总耗时:',time.time()-start)

多任务的异步协程asyncio

- 特殊的函数
    - 如果一个函数的定义被async关键字修饰,则该函数就是一个特殊的函数.
    - 特殊之处:
        - 1.特殊函数调用后,函数内部的程序语句没有被立即执行
        - 2.特殊函数调用后会返回个协程对象.
- 协程
    - 对象.可以调用特殊函数返回一个协程对象.
    - 协程 == 特殊的函数 == 一组指定形式的操作
    - 协程 == 一组指定形式的操作
- 任务
    - 对象.任务对象其实就是一个高级的协程对象.
    - 任务对象的获取:
    - 任务对象 == 协程 == 一组指定形式的操作
    - 任务 == 一组指定形式的操作
    - 特殊的机制:
        - 任务对象可以绑定一个回调函数,目的就是为了打印出特殊函数里面的return值
- 事件循环(核心)
    - 对象获取
        -通过实例化asyncio.get_event_loop()
    - 事件循环你可以暂且把它当做是一个载体或者容器.
    - 将协程或者任务对象装载在事件循环这个容器中
        - run_until_complete
    - 开启事件循环:
        - run_until_complete
- wait()
    - 用来对tasks这个任务列表进行指定操作.
    - wait可以将tasks任务列表中的每一个任务对象依次赋予可挂起的权限
    - 挂起:可以让当前被执行的任务对象交出cpu的使用权.
    - 当任务列表给wait方法修饰处理后,依然没有出现异步的效果,why?
        - 在特殊函数内部的实现语句中不可以出现不支持异步模块的代码,否则会中断整个异步效果.比如time模块,可以替代time模块的有asyncio
        
- await
    - 可以确保在异步的过程中让阻塞操作可以执行完毕


支持异步的网络请求模块aiohttp来替代requests模块
    - 环境安装:pip install aiohttp
    - 代码实现:
        - 第一步:编写特殊函数基本架构
            async def get_request(url):
                with aiohttp.ClientSession() as sess:
                    with sess.get(url) as response:
                        page_text = response.text()
                    return page_text
        - 补充细节:
            - 在每一个with前加上async关键字
            - 在每一步
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

爬虫逆向(js逆向) 的相关文章

  • 饥饿和公平

    转自 饥饿和公平 下文笔者将讲述java多线程中的 饥饿与公平 的相关知识 如下所示 Java中饥饿与公平的概念 当一个线程因为CPU时间全部被其他线程获取而无法获取CPU运行时间时 我们将这种状态称之为 饥饿 此时此线程由于 饥饿 而无法
  • 最大公约数与最小公倍数 -- 3种计算方法详解

    目录 1 穷举法 最大公约数 思路 最小公倍数 思路 2 辗转相除法 最大公约数与最小公倍数 最大公约数思路 最小公倍数思路 公式 3 特殊方法 最大公约数 相减法 思路 最小公倍数 叠乘法 思路 总结 1 穷举法 最大公约数 思路 假设两
  • C/C++问题处理:error : no matching function for call to ‘max‘

    报错代码 MaxVal max MaxVal words i size words j size 上面的 words 是vector
  • vue的双向绑定原理---defineProperty->Proxy

    可以实现双向绑定的方法有很多 基于观察者模式 基于数据模型 Angular基于脏检查的双向绑定 本篇我们重点讲vue的基于数据劫持和发布订阅的双向绑定 vue实例化过程中进行了以下操作 initLifecycle vm initEvents
  • Android性能之内存泄漏

    和你一起终身学习 这里是程序员Android 经典好文推荐 通过阅读本文 您将收获以下知识点 一 什么是内存泄漏 二 Android中导致内存泄漏的主要几个点三 Java虚拟机内存管理四 Java内存几种分配策略 五 垃圾收集器是如何判断对
  • MATLAB环境下基于支持向量机、孤立森林和LSTM自编码器的三轴振动数据的机械异常检测

    本文讲解如何使用机器学习和深度学习来检测机械振动数据中的异常 属于异常检测领域 这玩意在工业中用的更多 因为工业中毕竟还是正常样本远多于故障样本 异常样本 运行环境为MATLAB R2021B 第三方面包多官网下载如下 正在为您运送作品详情
  • 因为一个bug来深入探讨下分页插件PageHelper

    事情来源是这样的 因为某些操作失误 在使用分页插件pageHelper时 因为这样一句不起眼的操作 竟然引发了一系列的灾难 下面来看下灾难的由来 Page localPage PageHelper startPage page limit
  • Linux WIFI 驱动实验(USB和SDIO方式)

    目录 WIFI 驱动添加与编译 向Linux 内核添加WIFI 驱动 配置Linux 内核 编译WIFI 驱动 驱动加载测试 wireless tools 工具移植与测试 wireless tools 移植 wireless tools 工
  • 数据结构循环链表,增删改查基本操作

    一 双向循环链表的描述 和单链表的循环类似 双向链表也可以有循环表 循环表的引进是为了弥补双向链表不能向前遍历的弊端 在双向循环链表中 头结点的直接前驱为尾结点 而尾结点的直接后继为头结点 二 双向循环链表的存储结构 三 双向循环链表基本操
  • VS2012:LNK4098: 默认库“MSVCRT”与其他库的使用冲突

    VS2012警告 LINK warning LNK4098 默认库 MSVCRT 与其他库的使用冲突 请使用 NODEFAULTLIB library 原因 在使用多线程调试dll MDd 模式的时候 lt 位置 配置属性 c c 代码生成
  • 大厂偏爱的Agent技术究竟是个啥

    搜索关注微信公众号 捉虫大师 后端技术分享 架构设计 性能优化 源码阅读 问题排查 踩坑实践 hello大家好 我是小楼 今天给大家分享一个关于Agent技术的话题 也是后端启示录的第3篇文章 通过本文你可以了解到如下内容 什么是Agent
  • 硬盘安装Linux(ubuntu,centos)

    硬盘安装Linux ubuntu centos 硬盘安装Linux 使用硬盘安装Linux最大的好处不只是方便 是快速 之前使用U盘安装 很慢 没有记录具体时间 Ubuntu区别不大 本身比较小 安装介质只有2G ubuntu18 10 C
  • 【华为OD统一考试A卷

    华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一修改为OD统一考试 A卷 和OD统一考试 B卷 你收到的链接上面会标注A卷还是B卷 请注意 根据反馈 目前大部分收到的都是
  • Linux 实时查看文件 tail 命令详解

    Linux 实时查看文件 tail 命令详解 Linux 实时查看文件 tail 命令详解 一 概述 tail 命令用于显示文件的末尾内容 默认显示文件的最后 10 行 通常情况下 tail 命令用于实时查看日志文件 可以使用 f 参数跟踪
  • Python发送信息及附件到邮箱

    import smtplib import os from email mime text import MIMEText from email mime multipart import MIMEMultipart from email
  • PB的组合查询

    用PB进行数据库应用系统开发时 我们经常要对大量的数据进行筛选 查询 得到符合要求的记录 这就需要用到组合条件查询功能 我在作应用系统开发时 就自己编写了一个简单而又实用的组合条件查询模板窗口 只要用到组合条件查询的地方 都可从此窗口继承而
  • 【华为OD机试真题 JAVA】火星文计算

    JS版 华为OD机试真题 JS 火星文计算 标题 火星文计算 时间限制 1秒 内存限制 262144K 语言限制 不限 已知火星人使用的运算符为 其与地球人的等价公式如下 x y 2 x 3 y 4 x y 3 x y 2 1 其中x y是
  • webpack打包项目文件

    在项目开发中想了解一下使用webpack打包vue项目的具体操作 1 在命令窗口中使用npm run dev serve启动package json中配置的脚本运行项目 2 在build dev server js文件中 const con
  • 通行时间估计 读书笔记

    Learning to Estimate the Travel Time Didichuxing 中文提示 通行时间估计 特征提取 对路段中所有可能获取的数据进行特征提取 包括交叉路口 route 信号灯信息 路段长度 宽度 车道数 本段在
  • 【2023】华为OD机试真题Java-题目0198-整理扑克牌

    整理扑克牌 题目描述 给定一组数字 表示扑克牌的牌面数字 忽略扑克牌的花色 请安如下规则对这一组扑克牌进行整理 步骤一 对扑克牌进行分组 规则如下 当牌面数字相同张数大于等于4时 组合牌为炸弹 三张相同牌面数字 两张相同牌面数字 且三张牌与

随机推荐

  • 统计学---之样本方差与总体方差的区别

    前段日子重新整理了一下这个问题的解答 跟大家分享一下 如果有什么错误的话希望大家能够提出来 我会及时改正的 话不多说进入正题 首先 我们来看一下样本方差的计算公式 刚开始接触这个公式的话可能会有一个疑问就是 为什么样本方差要除以 n 1 而
  • Java加密技术(十一)——双向认证

    对于双向认证 做一个简单的描述 服务器端下发证书 客户端接受证书 证书带有公钥信息 用于验证服务器端 对数据加密 解密 起到OSI五类服务的认证 鉴别 服务和保密性服务 这只是单向认证 为什么 因为客户端可以验证服务器端 但服务器端不能验证
  • Mac前往服务器文件夹变成灰色,[mac]解决移动硬盘文件显示灰色的问题

    在mac上创建的文件 在复制到移动硬盘上后 变成灰色且不能操作 项目已被 macOS 使用 不能打开 在移动硬盘上变成灰色的文件 双击会提示 项目已被 macOS 使用 不能打开 打开终端输入 ls eln 灰色文件路径 image png
  • 新手如何使用pycharm

    开启coding之旅 我在写代码的时候 我总是因为安装包和环境的问题 代码总是bug不断 短段的两天时间 我整天扑在上面研究 不断地抓头 短段两天 我感觉我的头发都凸了一点了 后来我实在解决不了 于是直接付费请教别人帮我装机 就为了完成最简
  • Jenkins 设置镜像_在k8s上安装Jenkins及常见问题

    持续集成和部署是DevOps的重要组成部分 Jenkins是一款非常流行的持续集成和部署工具 最近试验了一下Jenkins 发现它是我一段时间以来用过的工具中最复杂的 一个可能的原因是它需要与各种其它工具集成才能完成任务 而集成的方法又各不
  • XML转JavaBean的简单实现

    一个基于JSON的简单的XML转为Bean的方法 之前在做一个WEB SERVICE的交互的时候 写的一个基于JSON的XML转Bean的方法 就把它整理处理 如下 gt pom xml 所有需要的依赖包如下
  • 使用ChatGPT自动编写Python爬虫脚本

    都知道最近ChatGPT聊天机器人爆火 我也想方设法注册了账号 据说后面要收费了 ChatGPT是一种基于大语言模型的生成式AI 换句话说它可以自动生成类似人类语言的文本 把梳理好的有逻辑的答案呈现在你面前 这完全不同于传统搜索工具 Cha
  • Unity Mesh网格编程(三) Shader实现水面或旗帜飘扬效果

    Upgrade NOTE replaced Object2World with unity ObjectToWorld Upgrade NOTE replaced mul UNITY MATRIX MVP with UnityObjectT
  • 【Unity3D小功能】Unity3D中实现UI擦除效果、刮刮卡功能

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 大家好 我是佛系工程师 恬静的小魔龙 不定时更新Unity开发技巧 觉得有用记得一键三连哦 一 前言 使用Unity3D实现UI的擦拭效果 刮刮卡
  • php图片居中显示图片,CSS实现图片居中的三种方式

    在我们的WEB前端css开发过程中 我们避免会遇到让图片居中的情况 为了网页美观以及用户的体验 我们有时候就要让图片居中 那么我们也都知道图片居中的方法有很多 今天我们就给大家详细介绍下CSS实现图片居中的三种方式 1 利用display
  • Docker入门命令

    文章目录 1 安装Docker 2 搜索 下载镜像 3 查询本地镜像 4 启动镜像到容器 5 查询已启动镜像 容器 6 进入容器环境 7 创建镜像 7 1 基于已有镜像的容器创建 7 2 基于本地模板导入 7 3 基于Dockerfile创
  • AI绘图:教你几个提示词 100%生成美丽小姐姐

    许多常用提示对于确保高质量的成像结果至关重要 我们将教您一些基本的提示词和设置 以节省您在初始探索过程中的时间 本次用到的模型ChilloutMix 基础设置 默认设置包括图片 大小 512 x 512 采样器 DPM SDE Karras
  • 逆序栈(使用递归)

    题目 一个栈依次压入1 2 3 4 5那么从栈顶到栈底分别为5 4 3 2 1 将这个栈转置后 从栈顶到栈底为1 2 3 4 5 也就是实现了栈中元素的逆序 请设计一个算法实现逆序栈的操作 但是只能用递归函数来实现 而不能用另外的数据结构
  • springBoot添加自定义拦截器

    文章目录 前言 步骤如下 首先新建一个自己的拦截器 其次 把自己的拦截器注册到spring中 让其生效 前言 新的项目需要校验用户是否登录 在springBoot项目中添加一个自定义的拦截器拦截到所有请求进行逻辑判断 步骤如下 首先新建一个
  • 资讯汇总230429

    230429 11 44 大华股份 重点投入大模型和多模态方向 会持续按需扩容算力 大华股份在业绩说明会表示 GPT 的发展具有里程碑式的意义 公司会重点投入大模型和多模态方向 过去在大模型领域的算法和工程能力已经有一定的积累 先进技术研究
  • 内行看门道:看似“佛系”的《QQ炫舞手游》,背后的音频技术一点都不简单

    欢迎大家前往腾讯云 社区 获取更多腾讯海量技术实践干货哦 本文由腾讯游戏云发表于云 社区专栏 内行看门道 看似 佛系 的 QQ炫舞手游 背后的音频技术一点都不简单 3月14日 腾讯旗下知名手游 QQ炫舞 正式上线各大应用商店 并迅速登上Ap
  • 卡尔曼滤波与目标跟踪(由cv模型的kf推理到CTRV模型的radar与lidar))(一)

    引用AdamShan 引用知乎陈光 基于cv模型的行人状态预测 卡尔曼滤波与目标追踪 卡尔曼的理论 一 初始化 我们认为小车在第1秒时的状态x与测量值z相等 二 预测 Prediction 完成初始化后 我们开始写Prediction部分的
  • Ubuntu20.04安装各种库----简洁版

    目录 Eigen3 Sophus Pangolin Ceres g2o 建议先装anaconda再装ros python opencv啥该有的都有了 下面仅仅安装ros没有的库 Eigen3 作用 线性代数开源库 提供了有关线性代数 矩阵和
  • 汽配企业如何利用MES管理系统解决生产防错难题

    汽车配件制造业是一个高效率 低成本 高质量的生产领域 但同时也面临着一系列的挑战 其中最为突出的挑战之一是如何在生产过程中避免错误 提高产品的合格率 本文将介绍汽车配件的制造特点以及如何通过MES管理系统解决方案实现生产防错 从而提高产品合
  • 爬虫逆向(js逆向)

    异步爬虫的实现方式 线程池 多任务的异步协程 多线程 生产者消费者模型 线程池 前提 from flask import Flask render template from time import sleep app Flask name