일부 전자 상거래 사이트를 스크랩하기 위해 웹 수확을 사용하고 있습니다. 검색 페이지를 반복하고 각 제품 세부 정보를 출력 xml로 가져옵니다.하지만 지금 앵커에서 정규 표현식을 사용하고 싶습니다. (a)에 태그를 긁어 특히 string.ie를 얻을 수 있지만,웹 수확 xml에서 regex 사용
let $linktoprod :=data($item//a[@class="fk-anchor-link"]/@href)
위의 라인은
/casio-sheen-analog-watch-women/p/itmdaqmvzyy23hz5?pid=WATDAQMVVNQEM9CX&ref=6df83d8f-f61f-4648-b846-403938ae92fa
자, 반환 값이 첫 번째 제품을 위해, 각 제품, 즉의 앵커 태그 HREF 값을 반환 I/([^/\?] +) \?와 같은 정규식을 사용하고 싶습니다. 마지막 /와 사이의 문자열을 가져오고? 즉,
itmdaqmvzyy23hz5
출력 xml. 이 문제와 관련하여 도움이되는 분은 제게 도움을주십시오. 감사합니다.
업데이트 - 쇼 above.Where 내 XML에서 정규 표현식 코드 블록을 사용하기로
<?xml version="1.0" encoding="UTF-8"?>
<config charset="ISO-8859-1">
<function name="download-multipage-list">
<return>
<while condition="${pageUrl.toString().length() != 0}" maxloops="${maxloops}" index="i">
<empty>
<var-def name="content">
<html-to-xml>
<http url="${pageUrl}"/>
</html-to-xml>
</var-def>
<var-def name="nextLinkUrl">
<xpath expression="${nextXPath}">
<var name="content"/>
</xpath>
</var-def>
<var-def name="pageUrl">
<template>${sys.fullUrl(pageUrl.toString(), nextLinkUrl.toString())}</template>
</var-def>
</empty>
<xpath expression="${itemXPath}">
<var name="content"/>
</xpath>
</while>
</return>
</function>
<var-def name="products">
<call name="download-multipage-list">
<call-param name="pageUrl">http://www.flipkart.com/watches/pr?sid=reh%2Cr18</call-param>
<call-param name="nextXPath">//a[starts-with(., 'Next')]/@href</call-param>
<call-param name="itemXPath">//div[@class="product browse-product "]</call-param>
<call-param name="pids"></call-param>
<call-param name="maxloops">5</call-param>
</call>
</var-def>
<var-def name="scrappedContent">
<!-- iterates over all collected products and extract desired data -->
<![CDATA[ <catalog> ]]>
<loop item="item" index="i">
<list><var name="products"/></list>
<body>
<xquery>
<xq-param name="item" type="node()"><var name="item"/></xq-param>
<xq-expression><![CDATA[
declare variable $item as node() external;
let $linktoprod :=data($item//a[@class="fk-anchor-link"]/@href)
let $name := data($item//div[@class="title"])
return
<product>
<link>{$linktoprod}</link>
<title>{normalize-space($name)}</title>
</product>
]]></xq-expression>
</xquery>
</body>
</loop>
<![CDATA[ </catalog> ]]>
</var-def>
</config>
내 구성 XML은 무엇입니까? 그리고 나는 regexp가 linktoprod에 적용되고 마지막으로 출력 xml로 링크 태그에 regexp 출력을 얻고 싶습니다. 누군가 나를 안내합니다. 감사합니다.
귀하의 질문에 현재 웹 수확 XML을 제시해주십시오. –