用XPath“剪切文档”还是用“提取信息”?”结果

矿业公司矿业公司 成员职位:13因素二世
2018年12月编辑 帮助

亲爱的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 " / >
< /操作符>
/> .

.
.
> < /过程
< /操作符>


. .
.
> < /过程
< /操作符>
> < /过程

谢谢你的支持。

最佳答案

  • kaymankayman 成员职位:662独角兽
    解决方案接受

    只需添加text(),就像这样:

    / / * [@ id =' ms-maincontent '] / h: div [1] / h: div [1] / h: div / h: div / / h: h4(包含(“Arbeitgeber”)]/ . . / h: p [2] / text ()
    sgenzer

答案

  • kaymankayman 成员职位:662独角兽

    我用下面的页面做了一个快速测试:

    https://jobs.meinestadt.de/deutschland/suche?words=Zollabwicklung&page=1#ms-jobs-result-list

    这基本上是你用逻辑抓取的第一页。在此页上没有包含文本Arbeitgeber的h4,因此你没有得到任何结果。

    除此之外,您还需要为每个元素添加h:,因为它们都使用相同的html名称空间。下面的例子将向您展示匹配到第4 div,因为从那里您的Xpath不再匹配任何东西。这可能是因为我使用的页面,所以它可以为您工作。

    <?xml version="1.0" encoding="UTF-8"?> <过程version = " 7.6.001”>
    > <上下文
    <输入/ >
    <输出/ >
    <宏/ >
    > < /上下文


    <过程扩展= " true " >

    https://jobs.meinestadt.de/deutschland/suche?words=Zollabwicklung&page=1#ms-jobs-result-list" / >
    <列出关键= " query_parameters " / >
    <列出关键= " request_properties " / >
    < /操作符>


    .
    <列出关键= " string_machting_queries " / >
    <列出关键= " regular_expression_queries " / >
    <列出关键= " regular_region_queries " / >
    <列出关键= " xpath_queries " >
    @ id =' ms-maincontent '] / h: div [1] / h: div [1] / h: div / h: div " / >
    < / >列表
    <列出关键= "名称" / >

    <列出关键= " index_queries " / >
    <列出关键= " jsonpath_queries " / >
    < /操作符>


    < /操作符>

    /> .

    . .
    .
    > < /过程
    < /操作符>
    > < /过程

    希望这能有所帮助。

    sgenzer
  • 矿业公司矿业公司 成员职位:13因素二世

    亲爱的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网站?

    谢谢

  • kaymankayman 成员职位:662独角兽

    啊,找到了。试试这个:

    / / * [@ id =' ms-maincontent '] / h: div [1] / h: div [1] / h: div / h: div / / h:部分(h: h4(包含(“Arbeitgeber”)]]/ h: p [2]

    有点难以解释,但您所做的实际上是选择h4,然后进一步移动到该节点中的第二个p,但您的h4没有节点,因此选择兄弟节点没有任何用处。相反,您必须选择包含h4(在本例中是section)的元素,并获取section中的第二个p。

    另一种方法是在选择h4后向上一步,然后获得如下所示的第二个元素

    / / * [@ id =' ms-maincontent '] / h: div [1] / h: div [1] / h: div / h: div / / h: h4(包含(“Arbeitgeber”)]/ . . / h: p [2]

    双点将您带回到父级,但这可能不像第一个变量那样可靠

    顺便说一下,不要介意html to xml操作符,我通常使用这个,因为我将xml加载到另一个编辑器中,这样我总是确保html是正确的xhtml。

    sgenzer
  • 矿业公司矿业公司 成员职位:13因素二世

    亲爱的Kayman,

    非常感谢-现在你的第一个建议工作得很好

    只有一个小细节:结果现在是:

    “< p xmlns = 'http://www.w3.org/1999xhtml ' > BefristeteÜberlassung von Arbeitskräften

    "

    你知道我怎么才能找到"Befristete Überlassung von Arbeitskräften"吗?

  • 矿业公司矿业公司 成员职位:13因素二世

    的大力支持! !

    我正试着通过你的样品来了解其他元素。

    非常感谢。

    sgenzer
  • 17900713 r17900713 r 成员职位:9贡献我

    你好,

    请问您是如何获得流程代码的?

登录注册置评。