JavaScript陷入了Selenium for Python的泥潭 - javascript

因此,当您向下滚动页面时,我想抓取一个使用JavaScript / AJAX生成其他结果的网站。我正在将Python 3.7与Selenium Chrome无头运行。但是,随着抓取的进行,您最终将获得数量不断增加的代码,这会使我的机器运行缓慢,直到停止为止。甚至简单的操作-

code = driver.page_source

–生长需要几秒钟。我运行了一个测试,以查看代码库在从最初的大约50万个字符的初始长度扩展到2500万个字符– 50倍后的数百个结果之后增长了多少!我的问题是这样的:

1)是否有某种方法可以让Selenium删除先前的代码(类似于您可以在Chrome的“检查元素”模式下删除它的方法)以保持大小可管理?

2)还是我忽略了其他一些简单的解决方案?

参考方案

一种建议是查看正在运行的javascript,并在python中执行类似的操作,而不是仅仅依靠selenium。

我不知道您在做什么网站,但听起来它正在进行一系列AJAX调用,加载另一页和另一页结果(图像/帖子/任何内容)。

对JS进行反向工程-可能一遍又一遍地执行相同的AJAX调用,传入一个或两个参数。弄清楚JS如何计算传入的参数(是时间戳,还是接收到的“最后一个”元素的ID等)

然后,不要让selenium来完成工作,而是使用python请求进行等效的POST。检索数据(可能是json或html),将其解析为您需要的内容,然后重复。

根据您正在寻找的站点,这可以快几个数量级。

提交初始化后删除某些帖子数据 - javascript

在初始化提交之后但在将数据发送到处理页面之前,是否可以过滤$ _POST表单数据?我想象过程的方式:提交->收集$ _POST数据->发送数据我想做的事:提交->收集$ _POST数据->删除某些元素->发送数据这样就不必更改处理页面以过滤掉不希望接收的元素了吗? javascript大神给出的解决方案 当然可以,您可以在JS …

写一行到javascript文件 - javascript

我正在使用数组来显示网站中的一些图像:var paintingImages; paintingImages = [ { url: 'images/objects/ron.jpg', alt: 'ron' } ]; 该js代码写在paintings.js中,我的主要js代码写在main.js文件中我已经为艺术家制作了这个…

在JavaScript中运行方法C# - javascript

打扰一下,我有这种C#asp方法。受保护的无效btnSave_Click(对象发送者,EventArgs e)有谁知道我该如何发送脚本给您?可以办到?。 javascript大神给出的解决方案 是的,那可以做到。为此,您在.aspx.cs页中创建了函数,然后单击保存按钮上的代码将其复制到函数中,然后执行以下步骤。//Call cs method from J…

如何从客户端将数据插入数据库? - javascript

我是Web开发的初学者,可以访问cpanel上托管的网站,并且需要对其进行一些更改。这个网站的后端是由蛋糕PHP制作的,我想使用ajax从客户端将一些数据插入其数据库。问题是我不知道如何获取负责插入数据库的PHP文件的URL。参见下面的代码:var xhttp = newXMLHttpRequest(); xhttp.onreadystatechange= …

如何通过URL防止XSS? - javascript

我熟悉通常的持久性XSS,在这种情况下,来自用户输入的内容应在通往模板(html实体)的途中进行转义。最近,我遇到了一个非持久性的问题,用户可以在URL上的脚本中发送该URL,而该URL则显示在页面的某处。就我而言,这是一个链接标记。因此,我有以下使用当前URL的链接标记。<link rel="next" href="{c…