.oO SearXNG Developer Documentation Oo.
Loading...
Searching...
No Matches
baidu.py
Go to the documentation of this file.
1
# SPDX-License-Identifier: AGPL-3.0-or-later
2
"""Baidu_
3
4
.. _Baidu: https://www.baidu.com
5
"""
6
7
# There exits a https://github.com/ohblue/baidu-serp-api/
8
# but we don't use it here (may we can learn from).
9
10
from
urllib.parse
import
urlencode
11
from
datetime
import
datetime
12
13
from
searx.exceptions
import
SearxEngineAPIException
14
15
about = {
16
"website"
:
"https://www.baidu.com"
,
17
"wikidata_id"
:
"Q14772"
,
18
"official_api_documentation"
:
None
,
19
"use_official_api"
:
False
,
20
"require_api_key"
:
False
,
21
"results"
:
"JSON"
,
22
"language"
:
"zh"
,
23
}
24
25
paging =
True
26
categories = [
"general"
]
27
base_url =
"https://www.baidu.com/s"
28
results_per_page = 10
29
30
31
def
request
(query, params):
32
keyword = query.strip()
33
34
query_params = {
35
"wd"
: keyword,
36
"rn"
: results_per_page,
37
"pn"
: (params[
"pageno"
] - 1) * results_per_page,
38
"tn"
:
"json"
,
39
}
40
41
params[
"url"
] = f
"{base_url}?{urlencode(query_params)}"
42
return
params
43
44
45
def
response
(resp):
46
try
:
47
data = resp.json()
48
except
Exception
as
e:
49
raise
SearxEngineAPIException
(f
"Invalid response: {e}"
)
from
e
50
results = []
51
52
if
"feed"
not
in
data
or
"entry"
not
in
data[
"feed"
]:
53
raise
SearxEngineAPIException
(
"Invalid response"
)
54
55
for
entry
in
data[
"feed"
][
"entry"
]:
56
if
not
entry.get(
"title"
)
or
not
entry.get(
"url"
):
57
continue
58
59
published_date =
None
60
if
entry.get(
"time"
):
61
try
:
62
published_date = datetime.fromtimestamp(entry[
"time"
])
63
except
(ValueError, TypeError):
64
published_date =
None
65
66
results.append(
67
{
68
"title"
: entry[
"title"
],
69
"url"
: entry[
"url"
],
70
"content"
: entry.get(
"abs"
,
""
),
71
"publishedDate"
: published_date,
72
# "source": entry.get('source')
73
}
74
)
75
76
return
results
searx.exceptions.SearxEngineAPIException
Definition
exceptions.py:54
searx.engines.baidu.request
request(query, params)
Definition
baidu.py:31
searx.engines.baidu.response
response(resp)
Definition
baidu.py:45
searx.exceptions
Definition
exceptions.py:1
searxng
searx
engines
baidu.py
Generated on Sat Mar 8 2025 14:18:40 for .oO SearXNG Developer Documentation Oo. by
1.13.2