用XPath“剪切文档”还是用“提取信息”?”结果
亲爱的RM-experts,
我正在努力从我爬过的网站中提取某些信息。
我的流程如下:
我有一个“爬行网络”运营商爬行网站在一个循环。这个过程工作得很好(测试了多达17次迭代)。
抓取的网页存储为html文件(每个站点一个文件)。
现在我想从这些网站获得一个特定的信息,我有一个xpath语句,这在谷歌电子表格上工作得很好,但在RM中不是。我尝试使用推荐的“剪切文档”操作符和“从文件中处理文档”流程中的“提取信息”操作符。
我已经搜索了论坛,并尝试了“//h:”和“假设html”的所有可能版本——知道RM中的语法略有不同——但没有成功。
有人能解决这个问题吗?
以下是我目前的流程:
<?xml version="1.0" encoding="UTF-8"?> <过程version = " 7.5.003”>
> <上下文
<输入/ >
<输出/ >
<宏/ >
> < /上下文
<过程扩展= " true " >
<过程扩展= " true " >https://jobs.meinestadt.de/deutschland/suche?words=Zollabwicklung&音箱;页面= %{迭代}# ms-jobs-result-list" / >
<列出关键= " crawling_rules " >
/> ..
/> .. x64)
< /操作符>.
> < /过程
< /操作符>
<列出关键= " text_directories " >
< / >列表. . .
<过程扩展= " true " >.
<列出关键= " string_machting_queries " / >
<列出关键= " regular_expression_queries " / >
<列出关键= " regular_region_queries " / >
<列出关键= " xpath_queries " >@ id =和;“;ms-maincontent"] / div [1] / div [1] / div / div / / h4(包含(文本()、“Arbeitgeber”)]/祖辈::p [2] / text ()" / >
< / >列表
<列出关键= "名称" / >
<列出关键= " index_queries " / >
<列出关键= " jsonpath_queries " / >
< /操作符>
/> .. .
> < /过程
< /操作符>. . .
> < /过程
< /操作符>
> < /过程
谢谢你的支持。
0
答案
我用下面的页面做了一个快速测试:
https://jobs.meinestadt.de/deutschland/suche?words=Zollabwicklung&page=1#ms-jobs-result-list
这基本上是你用逻辑抓取的第一页。在此页上没有包含文本Arbeitgeber的h4,因此你没有得到任何结果。
除此之外,您还需要为每个元素添加h:,因为它们都使用相同的html名称空间。下面的例子将向您展示匹配到第4 div,因为从那里您的Xpath不再匹配任何东西。这可能是因为我使用的页面,所以它可以为您工作。
希望这能有所帮助。
亲爱的Kayman,
谢谢你的及时回复。
你测试的结果页面是正确的,但我在具体的工作页面上是这样的:
https://jobs.meinestadt.de/deutschland/standard?id=200880935
要判断一个职位是由公司直接发布,还是由人才租赁机构发布。
在这个细节页面上,XPath //*[@ id = " ms-maincontent "] / div [1] / div [1] / div / div / / h4(包含(文本(),'Arbeitgeber')]/following-sibling::p[2]返回值为“Befristete Überlassung von Arbeitskräften”,因此这是一个人员租赁招聘启事。
我现在试着
/ / * [@ id = " ms-maincontent "] / h: div [1] / h: div [1] / h: div / h: div / / h4(包含(文本()、“Arbeitgeber”)]/祖辈::p [2]
/ / * [@ id = " ms-maincontent "] / h: div [1] / h: div [1] / h: div / h: div / / h4(包含(文本()、“Arbeitgeber”)]/ h:祖辈:h: p [2]
/ / * [@ id = " ms-maincontent "] / h: div [1] / h: div [1] / h: div / h: div / / h: h4(包含(文本()、“Arbeitgeber”)]/祖辈::p [2]
/ / * [@ id = " ms-maincontent "] / h: div [1] / h: div [1] / h: div / h: div / / h: h4(包含(文本()、“Arbeitgeber”)]/ h:祖辈:h: p [2]
但没有成功。我哪里错了?
你使用了'html to xml'-操作符。我如何使用这个操作符存储的html网站?
谢谢
啊,找到了。试试这个:
有点难以解释,但您所做的实际上是选择h4,然后进一步移动到该节点中的第二个p,但您的h4没有节点,因此选择兄弟节点没有任何用处。相反,您必须选择包含h4(在本例中是section)的元素,并获取section中的第二个p。
另一种方法是在选择h4后向上一步,然后获得如下所示的第二个元素
双点将您带回到父级,但这可能不像第一个变量那样可靠
顺便说一下,不要介意html to xml操作符,我通常使用这个,因为我将xml加载到另一个编辑器中,这样我总是确保html是正确的xhtml。
亲爱的Kayman,
非常感谢-现在你的第一个建议工作得很好
只有一个小细节:结果现在是:
“< p xmlns = 'http://www.w3.org/1999xhtml ' > BefristeteÜberlassung von Arbeitskräften
"你知道我怎么才能找到"Befristete Überlassung von Arbeitskräften"吗?
的大力支持! !
我正试着通过你的样品来了解其他元素。
非常感谢。
你好,
请问您是如何获得流程代码的?