我有一个工作流程,可以获取用户在 keywords.csv 中指定的关键字。然后,它开始对页面进行搜索查询,并将关键字作为搜索 URL 的一部分进行迭代。以前这很容易,因为我可以使用 url 参数 li=100000
在一页上显示所有结果。他们改变了它,所以我必须获取单页并从那里提取它。
问题是,我是 talend 新手,从同事那里得到了这个工作流程。这是概述,执行旧的 li=100000 并将所有结果写入单独的文本文件(keyword_1.txt、keyword_2.txt,....):
以下是来自求职门户网站 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/