.oO SearXNG Developer Documentation Oo.
Loading...
Searching...
No Matches
sogou.py
Go to the documentation of this file.
1# SPDX-License-Identifier: AGPL-3.0-or-later
2"""Sogou search engine for searxng"""
3
4from urllib.parse import urlencode
5from lxml import html
6
7from searx.utils import extract_text
8
9# Metadata
10about = {
11 "website": "https://www.sogou.com/",
12 "wikidata_id": "Q7554565",
13 "use_official_api": False,
14 "require_api_key": False,
15 "results": "HTML",
16 "language": "zh",
17}
18
19# Engine Configuration
20categories = ["general"]
21paging = True
22time_range_support = True
23
24time_range_dict = {'day': 'inttime_day', 'week': 'inttime_week', 'month': 'inttime_month', 'year': 'inttime_year'}
25
26# Base URL
27base_url = "https://www.sogou.com"
28
29
30def request(query, params):
31 query_params = {
32 "query": query,
33 "page": params["pageno"],
34 }
35
36 if time_range_dict.get(params['time_range']):
37 query_params["s_from"] = time_range_dict.get(params['time_range'])
38 query_params["tsn"] = 1
39
40 params["url"] = f"{base_url}/web?{urlencode(query_params)}"
41 return params
42
43
44def response(resp):
45 dom = html.fromstring(resp.text)
46 results = []
47
48 for item in dom.xpath('//div[contains(@class, "vrwrap")]'):
49 title = extract_text(item.xpath('.//h3[contains(@class, "vr-title")]/a'))
50 url = extract_text(item.xpath('.//h3[contains(@class, "vr-title")]/a/@href'))
51
52 if url.startswith("/link?url="):
53 url = f"{base_url}{url}"
54
55 content = extract_text(item.xpath('.//div[contains(@class, "text-layout")]//p[contains(@class, "star-wiki")]'))
56 if not content:
57 content = extract_text(item.xpath('.//div[contains(@class, "fz-mid space-txt")]'))
58
59 if title and url:
60 results.append(
61 {
62 "title": title,
63 "url": url,
64 "content": content,
65 }
66 )
67
68 return results
request(query, params)
Definition sogou.py:30