并行运行硒/并行或按顺序刮除多个站点?

时间:2019-03-02 18:09:00

标签: python django selenium selenium-webdriver parallel-processing

我是Django的新手,我正在创建一个Web应用程序,该应用程序具有一个表单,该表单将用户输入的内容从表单发送到其他一些在线工具,然后提交数据,然后抓取结果并在表单中显示输出我的网络应用程序中的表格的外观,例如:https://i.imgur.com/AVj3cJJ.png

由于工具带有javascript对象,我最终在PhantomJS中使用了硒,在此之前,我一直使用Mechanicalsoup,但效果很好,但是当我接触到javascript元素时卡住了,因此切换到了硒。

我遇到了一个问题,目前我通过自己创建的函数运行刮板,并在我的视图中像这样调用它:

if form.is_valid():
     crisporDF = crispor(form.cleaned_data['dnaSeq'], form.cleaned_data['species'])

此函数获取用户数据并将其输入到刮板中,然后生成表,如上面的屏幕截图所示,一切正常,但是我需要5个工具才能刮刮并生成5个表,所以我ve为另一个工具创建了另一个类似的函数,这是我得到的结果:https://i.imgur.com/qDXVR7s.png

正如您看到的那样,第二张表中的结果很好,但是使用来自用户的相同输入数据,第一张表不能产生正确的结果。

我觉得呢?这是因为我正在每个函数中创建一个新的WebDriver,并且我知道Django是一个同步框架,但是我也知道有一些方法可以异步运行函数。我不知道为什么它不再为第一个站点产生正确的结果。但是,如果我的逻辑正确,那一定是因为可以一次调用一个Webdriver实例吗?我曾尝试创建一个WebDriver,但似乎不起作用。

因此我要问

  • 如何并行运行硒?
  • 或者如何让硒进入第一个站点,运行我的函数并获取数据,然后转到下一个URL并运行我的下一个函数 并获取数据?那么顺序/时间顺序?我知道这 会增加页面加载时间,但这不是我担心的事情 就像处理科学数据一样,甚至可能需要几秒钟 小时,所以这不是问题。
  • 我了解有诸如芹菜之类的工具,但是由于加载时间不是问题,所以我不介意在 前景,Python中的多进程可以吗?例如创建一个 每个工具的实例,例如每个都有5个Webdriver实例 工具,获取数据,然后将其汇总在一起,以表格形式打印在 现场?有可能吗?

感谢您的帮助!如果您需要更多信息,请询问!

0 个答案:

没有答案