java - 如何获取给定关键字的搜索结果(html 格式)并针对 Talend 中的所有搜索结果页面迭代它?

标签 java parsing talend web-crawler

我有一个工作流程,可以获取用户在 keywords.csv 中指定的关键字。然后,它开始对页面进行搜索查询,并将关键字作为搜索 URL 的一部分进行迭代。以前这很容易,因为我可以使用 url 参数 li=100000 在一页上显示所有结果。他们改变了它,所以我必须获取单页并从那里提取它。

问题是,我是 talend 新手,从同事那里得到了这个工作流程。这是概述,执行旧的 li=100000 并将所有结果写入单独的文本文件(keyword_1.txt、keyword_2.txt,....):

enter image description here

以下是来自求职门户网站 Absolventa 的示例查询:

http://www.absolventa.de/stellenangebote?query%5Bcity%5D=&query%5Bradius%5D=100&query%5Btext%5D=SAP&utf8=%E2%9C%93

我现在的问题是 - 如何在 talend 中添加函数来抓取第 1 页,然后抓取第 2 页的所有指定关键字。并将其添加到我的流程中。由于我是 Talend 新手,请解释一下低级别。

提前非常感谢您!

最佳答案

您将需要使用 tLoop 组件集来使用 for 循环来循环遍历所有可能的页面。

因此,您需要在 tFlowToIterate 组件之间连接 tLoop,然后将循环迭代变量连接到您的 URL 中,如下所示:

"http://www.absolventa.de/stellenangebote?page=" +
((Integer)globalMap.get("tLoop_1_CURRENT_ITERATION")) +
"&query%5Bcity%5D=&query%5Bradius%5D=100&query%5Btext%5D=SAP&utf8=%E2%9C%93"

我不确定当页面不返回任何内容时如何结束它(您需要一个 while 循环,可以在处理循环后设置条件),但如果您只是将输出文件设置为附加,那么如果没有返回任何内容,那么它不会向文件添加任何内容。您仍然会遇到这样的问题:您需要将 tLoop 组件中的循环量设置得足够高,以覆盖任何可能发生的情况,但这会发出大量毫无意义的请求来获取这些空页面。

您也许可以通过一些额外的努力将其重新加工为 while 循环,但我在这方面没有太多经验。

关于java - 如何获取给定关键字的搜索结果(html 格式)并针对 Talend 中的所有搜索结果页面迭代它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25018691/

相关文章:

c - "Parse"代码行不允许代码执行

android - AdapterView 和 addView 的问题

matlab - 在 Octave/MATLAB 中读取 csv 文件时可以忽略注释行吗?

java - 如何在struts-config中的forward标签中添加自定义元素

java - 默认为空白的 JSP 下拉列表

java - 拆分 JsonArray

java - Micrometer Timer.start/stop 和 Timer.record 之间的区别

hadoop - Talend for 大数据 hadoop 2.2.0

jmx - 显示从 Talend ESB 到 Prometheus 的 JvmHeapSize

sql - 雪花查询已终止 : "SQL execution canceled"