首页
学习
活动
专区
圈层
工具
发布

爬取豆瓣书单100本

好家伙,经过我的一番努力后,我发现豆瓣电影的页面是Ajax请求的页面,Ajax请求就是可以在不刷新界面的情况下加载页面的技术,比如说我们平时在网页浏览东西,一直往下滑他能够一直加载,用的就是Ajax请求...做了差不多了,就差把数据放进csv里了,在做的过程中真的很崩溃,发现了超级多问题,一开始就请求错了网页,然后换了个网页,后来得到了书单的名称,数据的类型有问题,正则也匹配不上,缩进又出问题,xpath定位也错...,反反复复一直运行真的好不容易看来我要多加练习,然鹅现在还要学习csv的操作,唉,好难,一度崩溃想哭。...首先看一下我们要爬取的页面: 是可以翻页的,点击后页面会刷新,所以不是Ajax请求的页面。...这是没翻页时的url: 这是翻了一页后的url: 所以我们可以分析出,我们在翻页时,只有start的参数在发生变化,表示的是从第几本开始的书,第一页从0开始,第二页从第25本书开始(也就是说一面有

62710

薛定谔的bug?不,是我还得练!

原案例按钮按下触发clickEvent方法,执行一些操作后,触发请求访问再做一些其他操作.代码见下:console.log("按钮被点击");$.ajax({url: '/hello',type: 'GET...看一下真实的事件执行顺序。通过控制台-性能的录制,抽象出下图。最快的解决方法就是,在 Ajax 中添加async: false,变为同步访问。...如何避免想要保留异步请求,又要保证顺序,就需要调整代码结构。从顺序执行,改为链式执行.讲白话就是,在success回调中执行剩余逻辑。...异步 HTTP 请求线程: ajax的异步请求,fetch请求等。原案例中所说的解决方案,同步就不算在内。定时触发器线程: setTimeout 和 setlnteval 计时的线程。...没有没有微任务,根据开头的流程来进行,就会达到分段渲染的效果。监控第一个项目,浏览崩溃了,没看到结果图,大概运行十几秒。监控第二个项目,因为分段了,运行时间就长了很多,三四分钟有了。

73930
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何优雅地校验后端接口数据,不做前端背锅侠

    我还真找到了一些运行时类型校验的库:typescript-needs-types,大部分需要使用指定格式编写代码,相当于对项目进行重构,拿其中 star 最多的 zod 举例,代码如下。...: 拦截请求 因为项目中发送请求都是调用统一封装的函数,所以我首先想到的是在函数中增加一层校验逻辑。...我真的有好多项目QAQ。 那干脆拦截所有请求统一处理好了。 很容易的找到了拦截所有 XMLHttpRequest 请求的库 ajax-hook,可以非常简单地对请求做处理。...,但是我突然想到我们的项目,好像使用 fetch 发送的请求来着???...后续会考虑对不合法的数据进行处理,比如应该返回数组但是返回了 null 的情况,如果能自动赋值 [],就可以防止前端页面崩溃的情况了。

    1.7K20

    常见重试方法的交互研究

    负载均衡器将请求从客户端路由到服务器。 服务器接受并服务请求。 客户端通过负载均衡器向服务器发送请求。收到响应后,他们会等待一段时间,然后再发送另一个请求。 我们有一个客户端定期向一台服务器发送请求。...由于中间没有任何时间间隔,如果所有的客户端都发生这种行为,这会导致服务端爆炸,爆炸代表的是服务器过载和崩溃。然后它会在几秒钟后重新启动。...当它恢复时,它可能会很快被淹没并再次崩溃。随着规模的扩大,这个问题会变得更严重。 您可能会看到,随着客户端开始重试,流量开始增加。最终,其中一台服务器将崩溃。...一旦一台服务器失效,剩下的两台服务器将无法处理新的负载。然后开始继续陷入崩溃的漩涡。 延迟重试 因此,在紧密循环中重试是有问题的,我们已经了解了原因。人们要做的下一件事是在每次重试之间添加延迟。...一旦请求量增加,当重试这些请求时,您会注意到回退开始,事情会平静下来。服务器可能会崩溃, 但客户端会为其提供恢复空间。

    42620

    机器学习可扩展性:从1到百万用户的架构演进

    机器学习应用的首次部署第一步是在某中心计算引擎上创建虚拟机实例。我们复制整个项目,允许HTTP流量,并将域名连接到此实例。模型启动运行并通过域名对用户可见。...但几周后,问题开始出现:部署需要太多手动工作添加新库版本和新模型时依赖关系开始不同步调试不直接为解决这些问题,我们添加了新的CI/CD流水线,成功自动化构建、测试和部署过程。...这意味着:创建新的虚拟机实例!然后复制应用程序,让它们同时运行和服务流量。负载均衡器在此发挥作用,它是在多个机器之间分配网络流量的设备,通过分散流量确保没有单个服务器承受过多负载。...缓存另一种最小化应用程序响应时间的好方法是使用某种缓存机制。缓存不过是保存数据的存储系统,以便未来请求可以更快地服务。监控警报服务数百万用户的应用程序最重要也最烦人的部分是警报。有时系统会崩溃。...实时预测并不总是可行或需要的。在很多用例中,模型无法在几秒钟内完成推理,或者我们的应用程序不需要立即响应。最常见的方法是任务/消息队列。消息队列是服务到服务异步通信的一种形式。

    14210

    Typecho使用AJAX自动填写游客信息思路分享

    灵感来源 35个月前写过一篇《Typecho使用AJAX实时获取评论头像》文章,当时只是获取ajax处理了邮箱,然后将gravatar头像地址给到头像。...昨天看了大佬的文章《写了一个很鸡肋的功能》,通过邮箱读取gravatar网站的api获取用户昵称,然后自动填入到评论区昵称上,觉得灵感很棒,本来想抄下的,后来一想gravatar有墙啊,那就有点难受了。...实现 于是经过几秒钟的思考,觉得直接读取历史评论里面的信息不就好了嘛,只要填过一次,下次评论时只要写下邮箱,别的信息就自动获取到了。...流程:用户填写邮箱地址,然后ajax请求api,api这里返回三个数据(头像地址,昵称,网站地址),然后将返回的信息自动填入。...效果 Typecho使用AJAX自动填写游客信息.gif 后语 这次只是分享下思路,因为我是在自己模板上直接弄的,有很多代码和教程没啥关系不方便大段大段的往文章里粘贴,所以只是分享下思路,会代码的应该都会写哈

    76350

    Linux | 只有十三个字符的经典Fork炸弹,讨厌谁就去整他吧!

    Jaromil在2002年设计了最为精简的一个Linux Fork炸弹,整个代码只有13个字符,在shell中运行后几秒后系统就会宕机: 这样看起来不是很好理解,我们可以更改下格式: 更好理解一点的话就是这样...,通过管道实现进程呈几何形式增长,最后再通过:来调用函数引爆炸弹.因此,几秒钟系统就会因为处理不过来太多的进程而死机,解决的唯一办法就是重启。...Bomb一下 秉着不作不死的心态,我们也来运行一下,于是我将矛头指向云主机,我使用了国内的一个2G内存的云主机,首先在本地开启两个终端,在一个终端连接云主机后运行炸弹,几秒后再尝试用另外一个终端登录,效果可以看下面...并且我在二号终端上尝试连接也没有任何反应。因为是虚拟的云主机,所以我只能通过主机服务商的后台来给主机断电重启。...与传统1v1、通过不断向服务器发送请求造成服务器崩溃不同,Fork炸弹有种坐山观虎斗,不费一兵一卒斩敌人于马下的感觉。更吓人的是这个函数是不需要root权限就可以运行的。

    3K60

    容器化 + Playwright:我怎么让 100 个浏览器同时跑还不宕机

    有一段时间,我在做一个多站点的网页采集项目。目标看起来挺简单的:同时运行一批Playwright实例去抓取数据。但一开始,我只开了二十几个浏览器,机器就快冒烟了。...一、性能瓶颈:为什么Playwright跑多了就挂刚开始的方案其实很“直男”:我在一台8核16G的机器上,用Python异步任务批量启动Playwright实例。...容器不再频繁重启,整体运行更平稳。四、压测结果:数字不会骗人经过这三步调整后,我重新做了一轮压测。...优化前:平均启动耗时3.8秒CPU占用接近100%内存15GB左右稳定运行不到20分钟优化后:平均启动耗时降到1.6秒CPU占用控制在75~80%内存下降到8~9GB稳定运行超过8小时无异常这些变化意味着什么...意味着我不需要再盯着监控屏幕等崩溃了。容器运行稳定,任务调度更顺畅,爬取速率也稳中有升。

    35610

    【Go 语言社区】Web 通信 之 长连接、长轮询(long polling)--转

    如果你对服务器端的反向Ajax感兴趣,可以参考这篇文章 DWR 反向Ajax 服务器端推的方式:http://www.cnblogs.com/hoojo/category/276235.html 欢迎大家继续支持和关注我的博客...长轮询:客户端向服务器发送Ajax请求,服务器接到请求后hold住连接,直到有新消息才返回响应信息并关闭连接,客户端处理完响应信息后再向服务器发送新的请求。...轮询的重建 浏览器收到回复并进行相应处理后,应马上重新发起请求,开始一个新的轮询周期。...服务器的性能 在长连接应用中,服务器与每个客户端实例都保持一个持久的连接,这将消耗大量服务器资源,特别是在一些大型应用系统中更是如此,大量并发的长连接有可能导致新的请求被阻塞甚至系统崩溃,所以,在进行程序设计时应特别注意算法的优化和改进...同ajax实现的基本原理一样,唯一不同的是当一个请求没有响应返回数据的情况下,下一个请求也将开始,这时候前面的请求将被停止。

    4.9K30

    linux bash Shell脚本经典 Fork炸弹演示及命令详解

    Jaromil 在 2002 年设计了最为精简的一个Linux Fork炸弹,整个代码只有13个字符,在 shell 中运行后几秒后系统就会宕机: :(){:|:&};: 这样看起来不是很好理解,我们可以更改下格式...因此,几秒钟系统就会因为处理不过来太多的进程而死机,解决的唯一办法就是重启。...Bomb一下 秉着不作不死的心态,我们也来运行一下,于是我将矛头指向云主机,,我使用了国内的一个2G内存的云主机,首先在本地开启两个终端,在一个终端连接云主机后运行炸弹,秒后再尝试用另外一个终端登录,效果可以看下面...并且我在二号终端上尝试连接也没有任何反应。因为是虚拟的云主机,所以我只能通过主机服务商的后台来给主机断电重启。...与传统1v1、通过不断向服务器发送请求造成服务器崩溃不同,Fork炸弹有种坐山观虎斗,不费一兵一卒斩敌人于马下的感觉。更吓人的是这个函数是不需要root权限就可以运行的。

    2K50

    宏观泛前端

    在接收到用户请求后,CGI 还可以返回相应处理后的网页。 CGI 被认为是服务端脚本语言的鼻祖。然而,它也有着非常致命的缺陷。首先,CGI 每收到一个请求,都会新开一个进程进行处理,性能很低。...当请求量成千上万时,服务器可能无法支撑以致崩溃。其次,黑客很容易通过不完善的 CGI 程序入侵开发者的服务器,系统安全无法得以保证。 CGI 的出现给当时刚起步的 Web 提供了一个发展方向。...得益于 Ajax 的推广,前后端分离的趋势日渐明显,前端不再需要依赖后端生存,所有数据都可以通过异步交互来获取。在取得一个完整定义的数据接口后,前后端甚至可以在零协作成本的情况下并行完成开发任务。...SPA 随着硬件设备不断发展,客户端的计算能力愈加过剩,越来越多的业务逻辑开始放到前端处理,比如页面路由。 过去要跳转一个地址,需要经由服务端的路由解析处理后,返回对应的页面。...而在使用 BOM 的一些无刷新跳转特性后,前端可以实现改变浏览器地址栏而不向服务端发送请求,因此也可以实现页面路由。

    81910

    JavaScript 逆向爬取实战(下)

    id 了,而且不同的详情页的加密 id 是不同的,这说明这个加密 id 的构造依赖于列表页 Ajax 的返回结果,所以可以确定这个加密 id 的生成是发生在 Ajax 请求完成后或者点击详情页的一瞬间...由此我们可以确定,这个加密 id 是在 Ajax 请求完成之后生成的,而且肯定也是由 JavaScript 生成的了。 那怎么再去找 Ajax 完成之后的事件呢?...好,那我们的目的是为了 Hook 列表页 Ajax 加载完成后的的加密 id 的 Base64 编码的过程,那怎么在不刷新页面的情况下再次复现这个操作呢?很简单,点下一页就好了。...而且它必须是在页面加载完了才注入的,所以它并不能在一开始就生效。...Python 实现详情页爬取 现在我们已经成功把详情页的加密 id 和 Ajax 请求的 token 找出来了,下一步就能使用 Python 完成爬取了,这里我就只实现第一页的爬取了,代码示例如下: import

    1.5K22

    Web 通信 之 长连接、长轮询(long polling)

    长轮询:客户端向服务器发送Ajax请求,服务器接到请求后hold住连接,直到有新消息才返回响应信息并关闭连接,客户端处理完响应信息后再向服务器发送新的请求。...轮询的重建 浏览器收到回复并进行相应处理后,应马上重新发起请求,开始一个新的轮询周期。...服务器的性能 在长连接应用中,服务器与每个客户端实例都保持一个持久的连接,这将消耗大量服务器资源,特别是在一些大型应用系统中更是如此,大量并发的长连接有可能导 致新的请求被阻塞甚至系统崩溃,所以,在进行程序设计时应特别注意算法的优化和改进...同ajax实现的基本原理一 样,唯一不同的是当一个请求没有响应返回数据的情况下,下一个请求也将开始,这时候前面的请求将被停止。...其中红色是没有成功返回请求就被停止(后面请求开始)掉的请求,黑色是成功返回数据的请求。

    3K30

    如何优雅处理前端的异常?

    总结一下,大概如下: JS 语法错误、代码异常 AJAX 请求异常 静态资源加载异常 Promise 异常 Iframe 异常 跨域 Script error 崩溃和卡顿 下面我会针对每种具体情况来说明如何处理这些异常...三、Try-Catch 的误区 try-catch 只能捕获到同步的运行时错误,对语法和异步错误却无能为力,捕获不到。 1. 同步运行时错误: 输出: 2....怀着忐忑的心,我们最后来试试异步运行时错误: 控制台输出了: 接着,我们试试网络请求异常的情况: 我们发现,不论是静态资源异常,或者接口异常,错误都无法捕获到。...但崩溃就不一样了,网页都崩溃了,JS 都不运行了,还有什么办法可以监控网页的崩溃,并将网页崩溃上报呢? 崩溃和卡顿也是不可忽视的,也许会导致你的用户流失。...通过 Ajax 发送数据: 因为 Ajax 请求本身也有可能会发生异常,而且有可能会引发跨域问题,一般情况下更推荐使用动态创建 img 标签的形式进行上报。

    2.2K50

    带你认识 flask ajax 异步请求

    在严格的客户端应用中,整个应用通过初始页面请求下载到客户端,然后应用完全在客户端上运行,只有在查询或者变更数据时才与服务器联系。...06 来自服务器的 Ajax 我将从实现服务器端部分开始。当用户单击动态下方显示的翻译链接时,将向服务器发出异步HTTP请求。...在此上下文中运行的JavaScript代码可以更改DOM以触发页面中的更改 我们首先需要讨论的是,在浏览器中运行的JavaScript代码如何获取需要发送到服务器中运行的翻译函数的三个参数。...ID,后两个参数是源语言和目标语言代码 该函数从一个很好的接触开始:它添加一个加载器替换翻译链接,以便用户知道翻译正在进行中。...在成功回调中,我所需要做的就是使用翻译后的文本调用$(destElem).text(),该文本在字典中text键下。

    5.3K20

    如何用正确的姿势去高效的解决前端异常,用实践造就答案

    总结一下,大概如下: JS 语法错误、代码异常 AJAX 请求异常 静态资源加载异常 Promise 异常 Iframe 异常 跨域 Script error 崩溃和卡顿 下面我会针对每种具体情况来说明如何处理这些异常...三、Try-Catch 的误区 try-catch 只能捕获到同步的运行时错误,对语法和异步错误却无能为力,捕获不到。 1. 同步运行时错误: ? 输出: ? 2....由于网络请求异常不会事件冒泡,因此必须在捕获阶段将其捕捉到才行,但是这种方式虽然可以捕捉到网络请求的异常,但是无法判断 HTTP 的状态是 404 还是其他比如 500 等等,所以还需要配合服务端日志才进行排查分析才可以...七、崩溃和卡顿 卡顿也就是网页暂时响应比较慢, JS 可能无法及时执行。但崩溃就不一样了,网页都崩溃了,JS 都不运行了,还有什么办法可以监控网页的崩溃,并将网页崩溃上报呢?...通过 Ajax 发送数据: 因为 Ajax 请求本身也有可能会发生异常,而且有可能会引发跨域问题,一般情况下更推荐使用动态创建 img 标签的形式进行上报。 2.动态创建 img 标签的形式: ?

    1.4K60

    通过HTTP Range请求与前端解压技术实现网站文章高效存储与加载

    可以使用常见的压缩算法,如gzip、zlib等,将文章内容压缩成较小的数据块。压缩后的文章数据需要记录其在合并文件中的起始位置和长度,以便后续的HTTP Range请求能够准确获取。...后端接收到请求后,验证签名的有效性,只有验证通过的请求才会返回数据。代码示例以下是一个简化的代码示例,展示了如何使用JavaScript和Pako库实现前端请求和解压文章数据的过程:HTML复制崩溃。错误处理:在请求和解压过程中,可能会出现各种错误,如网络请求失败、解压错误等。...然而,在实际应用中,还需要综合考虑性能优化、错误处理和用户体验等因素,以确保网站的稳定运行和良好表现。未来,随着技术的不断发展,相信会有更多创新的方法来进一步提升网站的性能和用户体验。...希望这篇修改后的技术博客能够准确地反映你的技术实现和思路。如果还有任何需要调整的地方,请随时告诉我。以上文章已经在本人的网站实践,欢迎大家使用

    51410

    8.web的发展 互联网发展 起源 历史 cgi web项目发展 企业应用web项目 框架 发展 互联网技术发展 互联网技术包括 web技术发展 web开发技术

    当然这并不能满足日益增加的需求 人们希望程序能够识别处理用户的数据请求,并进一步作出反馈,也就是动态处理反馈 随后CGI出现了 他就是为了让web服务器能够运行外部的程序,进而提供动态内容的一个规范 真正使服务器能根据运行时的具体情况...(网景)着手开发的 跑在我自己的浏览器软件内部的一段只有我自己认识的代码,用来完成一些浏览器客户端的功能 你可以这么理解,浏览器是我自己开发的一个软件,我为了实现某种功能定义了一些规范条件语法 比如我说在我这个软件内...AJAX/前端框架/Node 而对于browser端,除了前面提到的js  css 在98年还出现了AJAX,05年之后大放异彩 主要是为了解决每次数据的更新都需要刷新页面,需要重新载入整个的页面数据...ajax的出现,可以让前后端工程师以ajax接口为分界点进行前后端分离 规定好交互接口后,前后端工程师就可以根据约定,分头开工 开发环境中通过Mock等方式进行测试,同时在特定时间节点进行前后端集成测试...随着Node.js的出现,JavaScript开始拥有在服务端运行的能力 它的异步本质使得Node.js在处理I/O密集型业务中优势凸显 而大多Web业务中I/O性能都是瓶颈。

    1.7K20

    JQuery 入门学习(三)

    所以说ajax最大的优点,就是在不更新整个页面的情况下对部分内容进行修改、维护,这样服务器发送的数据少,减少了服务器的负担。 简单的ajax获取信息     说了那么多,我都感觉蛋疼了。...首先看看怎么获取服务器上一个txt文件:使用load()方法     (因为ajax使用同源策略,所以在哪个网站运行代码就只能请求该服务器上的内容,我请求的是w3school中的一个txt文件,大家把代码放在...ajax使用get请求向服务器请求html内容     又回到我们开始的那个例子,判断用户名是否存在。     比如我们服务器上有这样一个文件nameexists.php: 请求)。第三个参数callback是一个回调函数,这个函数在获取到数据后运行,也就是说收到的数据可以在这个函数中处理。...配合上Jquery,原本就不复杂的ajax变得更加简单,而且在各个浏览器上都能很好地运行。

    9.8K20

    一个粗心的Bug,JSON格式不规范导致AJAX错误

    然后,我的ajax代码大概如下: function getRemoteData(url, param, success) { $.ajax({ type: 'get',...这段代码,一直走入error的回调 什么原因?我开始漫漫的排查之路。 一开始,我想是不是ajax代码写错了,仔细看了看,貌似没有什么问题。...不信邪,,看了看同事的代码,写法不一样,但是大体上也是这样的,也没问题。 那到底是什么问题,崩溃啊!...一怒之下,打开stackoverflow,开始搜索 由于方向错误,一直搜索 ajax、local file、always error等等。。...我只能说当时我的内心是崩溃的,虽然在搜索的过程中,学到了好多别的知识(各种问题链接看来看去,最后竟然看到关于react的东西去了,时间就是这样流逝掉的。。。),但关键是我这个问题还是没有解决。

    1.9K40
    领券