Skip to main content
DataForSeo 通过 API 提供全面的 SEO 和数字营销数据解决方案。 DataForSeo API 可从 GoogleBingYahoo 等主流搜索引擎检索 SERP,还支持从 MapsNewsEvents 等不同搜索引擎类型获取搜索结果。
本 notebook 演示了如何使用 DataForSeo API 获取搜索引擎结果。
pip install -qU langchain-community
from langchain_community.utilities.dataforseo_api_search import DataForSeoAPIWrapper

配置 API 凭证

您可以通过在 DataForSeo 网站注册来获取 API 凭证。
import os

os.environ["DATAFORSEO_LOGIN"] = "your_api_access_username"
os.environ["DATAFORSEO_PASSWORD"] = "your_api_access_password"

wrapper = DataForSeoAPIWrapper()
run 方法将从以下元素中返回第一个结果片段:answer_box、knowledge_graph、featured_snippet、shopping、organic。
wrapper.run("Weather in Los Angeles")

runresults 的区别

runresultsDataForSeoAPIWrapper 类提供的两个方法。 run 方法执行搜索,并从答案框、知识图谱、精选摘要、购物或自然搜索结果中返回第一个结果片段,这些元素按优先级从高到低排列。 results 方法根据 wrapper 中设置的参数返回 JSON 响应,可以更灵活地控制从 API 返回哪些数据。

以 JSON 格式获取结果

您可以自定义 JSON 响应中要返回的结果类型和字段,还可以设置返回顶部结果的最大数量。
json_wrapper = DataForSeoAPIWrapper(
    json_result_types=["organic", "knowledge_graph", "answer_box"],
    json_result_fields=["type", "title", "description", "text"],
    top_count=3,
)
json_wrapper.results("Bill Gates")

自定义位置和语言

您可以通过向 API wrapper 传递额外参数来指定搜索结果的位置和语言。
customized_wrapper = DataForSeoAPIWrapper(
    top_count=10,
    json_result_types=["organic", "local_pack"],
    json_result_fields=["title", "description", "type"],
    params={"location_name": "Germany", "language_code": "en"},
)
customized_wrapper.results("coffee near me")

自定义搜索引擎

您还可以指定要使用的搜索引擎。
customized_wrapper = DataForSeoAPIWrapper(
    top_count=10,
    json_result_types=["organic", "local_pack"],
    json_result_fields=["title", "description", "type"],
    params={"location_name": "Germany", "language_code": "en", "se_name": "bing"},
)
customized_wrapper.results("coffee near me")

自定义搜索类型

API wrapper 还允许您指定要执行的搜索类型,例如可以进行地图搜索。
maps_search = DataForSeoAPIWrapper(
    top_count=10,
    json_result_fields=["title", "value", "address", "rating", "type"],
    params={
        "location_coordinate": "52.512,13.36,12z",
        "language_code": "en",
        "se_type": "maps",
    },
)
maps_search.results("coffee near me")

与 LangChain agent 集成

您可以使用 langchain.tools 模块中的 @tool 装饰器将 DataForSeoAPIWrapper 与 LangChain agent 集成。该装饰器将函数转换为 agent 可调用的工具。
from langchain.tools import tool

search = DataForSeoAPIWrapper(
    top_count=3,
    json_result_types=["organic"],
    json_result_fields=["title", "description", "type"],
)


@tool
def google_search_answer(query: str) -> str:
    """My new answer tool."""
    return search.run(query)


@tool
def google_search_json(query: str) -> str:
    """My new json tool."""
    return search.results(query)