This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<pid="module-searx.engines.xpath">The XPath engine is a <em>generic</em> engine with which it is possible to configure
engines in the settings.</p>
<sectionid="configuration">
<h2><aclass="toc-backref"href="#id2"role="doc-backlink">Configuration</a><aclass="headerlink"href="#configuration"title="Link to this heading">¶</a></h2>
<h2><aclass="toc-backref"href="#id3"role="doc-backlink">Example</a><aclass="headerlink"href="#example"title="Link to this heading">¶</a></h2>
<p>Here is a simple example of a XPath engine configured in the <aclass="reference internal"href="../../admin/settings/settings_engine.html#settings-engine"><spanclass="std std-ref">engine:</span></a> section, further read <aclass="reference internal"href="engine_overview.html#engines-dev"><spanclass="std std-ref">Engine Overview</span></a>.</p>
<h2><aclass="toc-backref"href="#id4"role="doc-backlink">Implementations</a><aclass="headerlink"href="#implementations"title="Link to this heading">¶</a></h2>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.xpath.</span></span><spanclass="sig-name descname"><spanclass="pre">search_url</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">None</span></em><aclass="headerlink"href="#searx.engines.xpath.search_url"title="Link to this definition">¶</a></dt>
replacement is taken from the <codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">safes_search_map</span></code>. Filter results:</p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.xpath.</span></span><spanclass="sig-name descname"><spanclass="pre">lang_all</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">'en'</span></em><aclass="headerlink"href="#searx.engines.xpath.lang_all"title="Link to this definition">¶</a></dt>
<dd><p>Replacement <codeclass="docutils literal notranslate"><spanclass="pre">{lang}</span></code> in <aclass="reference internal"href="#searx.engines.xpath.search_url"title="searx.engines.xpath.search_url"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">search_url</span></code></a> if language <codeclass="docutils literal notranslate"><spanclass="pre">all</span></code> is
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.xpath.</span></span><spanclass="sig-name descname"><spanclass="pre">no_result_for_http_status</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">[]</span></em><aclass="headerlink"href="#searx.engines.xpath.no_result_for_http_status"title="Link to this definition">¶</a></dt>
<dd><p>Return empty result for these HTTP status codes instead of throwing an error.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.xpath.</span></span><spanclass="sig-name descname"><spanclass="pre">soft_max_redirects</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">0</span></em><aclass="headerlink"href="#searx.engines.xpath.soft_max_redirects"title="Link to this definition">¶</a></dt>
<dd><p>Maximum redirects, soft limit. Record an error but don’t stop the engine</p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.xpath.</span></span><spanclass="sig-name descname"><spanclass="pre">results_xpath</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">''</span></em><aclass="headerlink"href="#searx.engines.xpath.results_xpath"title="Link to this definition">¶</a></dt>
<dd><p><aclass="reference external"href="https://quickref.me/xpath.html#xpath-selectors">XPath selector</a> for the list of result items</p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.xpath.</span></span><spanclass="sig-name descname"><spanclass="pre">url_xpath</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">None</span></em><aclass="headerlink"href="#searx.engines.xpath.url_xpath"title="Link to this definition">¶</a></dt>
<dd><p><aclass="reference external"href="https://quickref.me/xpath.html#xpath-selectors">XPath selector</a> of result’s <codeclass="docutils literal notranslate"><spanclass="pre">url</span></code>.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.xpath.</span></span><spanclass="sig-name descname"><spanclass="pre">content_xpath</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">None</span></em><aclass="headerlink"href="#searx.engines.xpath.content_xpath"title="Link to this definition">¶</a></dt>
<dd><p><aclass="reference external"href="https://quickref.me/xpath.html#xpath-selectors">XPath selector</a> of result’s <codeclass="docutils literal notranslate"><spanclass="pre">content</span></code>.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.xpath.</span></span><spanclass="sig-name descname"><spanclass="pre">title_xpath</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">None</span></em><aclass="headerlink"href="#searx.engines.xpath.title_xpath"title="Link to this definition">¶</a></dt>
<dd><p><aclass="reference external"href="https://quickref.me/xpath.html#xpath-selectors">XPath selector</a> of result’s <codeclass="docutils literal notranslate"><spanclass="pre">title</span></code>.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.xpath.</span></span><spanclass="sig-name descname"><spanclass="pre">thumbnail_xpath</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">False</span></em><aclass="headerlink"href="#searx.engines.xpath.thumbnail_xpath"title="Link to this definition">¶</a></dt>
<dd><p><aclass="reference external"href="https://quickref.me/xpath.html#xpath-selectors">XPath selector</a> of result’s <codeclass="docutils literal notranslate"><spanclass="pre">thumbnail</span></code>.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.xpath.</span></span><spanclass="sig-name descname"><spanclass="pre">suggestion_xpath</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">''</span></em><aclass="headerlink"href="#searx.engines.xpath.suggestion_xpath"title="Link to this definition">¶</a></dt>
<dd><p><aclass="reference external"href="https://quickref.me/xpath.html#xpath-selectors">XPath selector</a> of result’s <codeclass="docutils literal notranslate"><spanclass="pre">suggestion</span></code>.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.xpath.</span></span><spanclass="sig-name descname"><spanclass="pre">cookies</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">{}</span></em><aclass="headerlink"href="#searx.engines.xpath.cookies"title="Link to this definition">¶</a></dt>
<dd><p>Some engines might offer different result based on cookies.
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.xpath.</span></span><spanclass="sig-name descname"><spanclass="pre">headers</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">{}</span></em><aclass="headerlink"href="#searx.engines.xpath.headers"title="Link to this definition">¶</a></dt>
<dd><p>Some engines might offer different result based headers. Possible use-case:
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.xpath.</span></span><spanclass="sig-name descname"><spanclass="pre">method</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">'GET'</span></em><aclass="headerlink"href="#searx.engines.xpath.method"title="Link to this definition">¶</a></dt>
<dd><p>Some engines might require to do POST requests for search.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.xpath.</span></span><spanclass="sig-name descname"><spanclass="pre">request_body</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">''</span></em><aclass="headerlink"href="#searx.engines.xpath.request_body"title="Link to this definition">¶</a></dt>
<dd><p>The body of the request. This can only be used if different <aclass="reference internal"href="#searx.engines.xpath.method"title="searx.engines.xpath.method"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">method</span></code></a>
is set, e.g. <codeclass="docutils literal notranslate"><spanclass="pre">POST</span></code>. For formatting see the documentation of <aclass="reference internal"href="#searx.engines.xpath.search_url"title="searx.engines.xpath.search_url"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">search_url</span></code></a>:</p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.xpath.</span></span><spanclass="sig-name descname"><spanclass="pre">paging</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">False</span></em><aclass="headerlink"href="#searx.engines.xpath.paging"title="Link to this definition">¶</a></dt>
<dd><p>Engine supports paging [True or False].</p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.xpath.</span></span><spanclass="sig-name descname"><spanclass="pre">page_size</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">1</span></em><aclass="headerlink"href="#searx.engines.xpath.page_size"title="Link to this definition">¶</a></dt>
<dd><p>Number of results on each page. Only needed if the site requires not a page
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.xpath.</span></span><spanclass="sig-name descname"><spanclass="pre">first_page_num</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">1</span></em><aclass="headerlink"href="#searx.engines.xpath.first_page_num"title="Link to this definition">¶</a></dt>
<dd><p>Number of the first page (usually 0 or 1).</p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.xpath.</span></span><spanclass="sig-name descname"><spanclass="pre">time_range_support</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">False</span></em><aclass="headerlink"href="#searx.engines.xpath.time_range_support"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.xpath.</span></span><spanclass="sig-name descname"><spanclass="pre">time_range_url</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">'&hours={time_range_val}'</span></em><aclass="headerlink"href="#searx.engines.xpath.time_range_url"title="Link to this definition">¶</a></dt>
<dd><p>Time range URL parameter in the in <aclass="reference internal"href="#searx.engines.xpath.search_url"title="searx.engines.xpath.search_url"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">search_url</span></code></a>. If no time range is
requested by the user, the URL parameter is an empty string. The
<codeclass="docutils literal notranslate"><spanclass="pre">{time_range_val}</span></code> replacement is taken from the <aclass="reference internal"href="#searx.engines.xpath.time_range_map"title="searx.engines.xpath.time_range_map"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">time_range_map</span></code></a>.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.xpath.</span></span><spanclass="sig-name descname"><spanclass="pre">time_range_map</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">{'day':</span><spanclass="pre">24,</span><spanclass="pre">'month':</span><spanclass="pre">720,</span><spanclass="pre">'week':</span><spanclass="pre">168,</span><spanclass="pre">'year':</span><spanclass="pre">8760}</span></em><aclass="headerlink"href="#searx.engines.xpath.time_range_map"title="Link to this definition">¶</a></dt>
<dd><p>Maps time range value from user to <codeclass="docutils literal notranslate"><spanclass="pre">{time_range_val}</span></code> in
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.xpath.</span></span><spanclass="sig-name descname"><spanclass="pre">safe_search_support</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">False</span></em><aclass="headerlink"href="#searx.engines.xpath.safe_search_support"title="Link to this definition">¶</a></dt>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.xpath.</span></span><spanclass="sig-name descname"><spanclass="pre">safe_search_map</span></span><emclass="property"><spanclass="w"></span><spanclass="p"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="pre">{0:</span><spanclass="pre">'&filter=none',</span><spanclass="pre">1:</span><spanclass="pre">'&filter=moderate',</span><spanclass="pre">2:</span><spanclass="pre">'&filter=strict'}</span></em><aclass="headerlink"href="#searx.engines.xpath.safe_search_map"title="Link to this definition">¶</a></dt>
<dd><p>Maps safe-search value to <codeclass="docutils literal notranslate"><spanclass="pre">{safe_search}</span></code> in <aclass="reference internal"href="#searx.engines.xpath.search_url"title="searx.engines.xpath.search_url"><codeclass="xref py py-obj docutils literal notranslate"><spanclass="pre">search_url</span></code></a>.</p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.xpath.</span></span><spanclass="sig-name descname"><spanclass="pre">request</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">query</span></span></em>, <emclass="sig-param"><spanclass="n"><spanclass="pre">params</span></span></em><spanclass="sig-paren">)</span><aclass="reference internal"href="../../_modules/searx/engines/xpath.html#request"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#searx.engines.xpath.request"title="Link to this definition">¶</a></dt>
<dd><p>Build request parameters (see <aclass="reference internal"href="engine_overview.html#engine-request"><spanclass="std std-ref">Making a Request</span></a>).</p>
<spanclass="sig-prename descclassname"><spanclass="pre">searx.engines.xpath.</span></span><spanclass="sig-name descname"><spanclass="pre">response</span></span><spanclass="sig-paren">(</span><emclass="sig-param"><spanclass="n"><spanclass="pre">resp</span></span></em><spanclass="sig-paren">)</span><spanclass="sig-return"><spanclass="sig-return-icon">→</span><spanclass="sig-return-typehint"><aclass="reference internal"href="index.html#searx.result_types.EngineResults"title="searx.result_types.EngineResults"><spanclass="pre">EngineResults</span></a></span></span><aclass="reference internal"href="../../_modules/searx/engines/xpath.html#response"><spanclass="viewcode-link"><spanclass="pre">[source]</span></span></a><aclass="headerlink"href="#searx.engines.xpath.response"title="Link to this definition">¶</a></dt>
<dd><p>Scrap <em>results</em> from the response (see <aclass="reference internal"href="../result_types/index.html#result-types"><spanclass="std std-ref">Result Types</span></a>).</p>