跳转到主要内容

未提供项目描述

项目描述

🤖 Oxy® 解析器

通过仅描述Pydantic模型来自动解析HTML。

Discord

Oxy® 解析器为您处理解析HTML的繁琐工作。它使用Pydantic模型来描述HTML的结构,然后自动将HTML解析为Pydantic模型。

  • 描述您期望的HTML结构的Pydantic模型
  • 将URL或HTML与Pydantic模型一起传递给Oxy® 解析器
  • Oxy® 解析器将解析HTML,并将解析后的数据作为Pydantic模型返回
  • Oxy® 解析器还会缓存选择器以供以后重用,因此您无需每次解析相同的HTML时都调用OpenAI的API

支持的缓存后端

  • 内存
  • 文件
  • Redis

查看流程图以获取详细信息

flowchart.png

安装

pip install oxyparser

支持的LLM

本项目使用LiteLLM,请参阅文档了解支持的LLM:https://docs.litellm.com.cn/docs/providers

使用方法

您需要设置一个包含以下变量的.env文件

LLM_API_KEY:可以是OpenAI密钥、Claude密钥或其他任何LLM提供者密钥。(有关支持的LLM的完整信息,请参阅上面的LiteLLM文档)

LLM_MODEL:您要使用的模型。(有关支持的LLM的完整信息,请参阅上面的LiteLLM文档)

爬虫密钥:它们是可选的,但如果未提供,您需要自己抓取并将HTML传递给Oxy® 解析器。但是,我们强烈建议使用Oxylabs爬虫,因为它将消除获取HTML的麻烦,并提供许多其他好处,例如IP轮换、处理验证码、绕过封锁等。

点击此处注册Oxylabs免费试用:https://dashboard.oxylabs.io/en/registration?productToBuy=SCRAPI_WEB

OXYLABS_SCRAPER_USER:您的Oxylabs爬虫用户(可选)OXYLABS_SCRAPER_PASSWORD:您的Oxylabs爬虫密码(可选)

LLM_API_KEY=your_openai_api_key
LLM_MODEL=gpt-3.5-turbo
OXYLABS_SCRAPER_USER=your_oxylabs_scraper_user  # optional
OXYLABS_SCRAPER_PASSWORD=your_oxylabs_scraper_pass  # optional

然后您可以使用以下代码将网站解析为结构化数据

完整示例请参阅examples目录。

from pydantic import BaseModel
from oxyparser.oxyparser import OxyParser

class JobItem(BaseModel):
    title: str
    recruiter_name: str
    location: str
    description: str


# this page might expire
# if it does, please replace it with a new one
# https://career.oxylabs.io
# also if you're a python dev and looking for job, hit us up!
URL: str = "https://career.oxylabs.io/job/813b9ac5/python-developer-mid-senior/"


async def main() -> None:
    parser = OxyParser()
    job_item = await parser.parse(URL, JobItem)
    print(job_item)


if __name__ == "__main__":
    import asyncio

    asyncio.run(main())

如果您有一个HTML字符串而不是URL,也可以将其传递给解析器,如下所示

parser = OxyParser()

html = "<html><body>" "<h1>John</h1>" "<h2>Smith</h2>" "<p>Svitrigailos st.</p>" "<span>2 years old</span></body></html>"
url = "https://example.com"  # url is needed to cache selectors
parsed_item = await parser.parse(url=url, model=JobItem, html=html)
print(job_item)

已知问题

存在一些已知的情况,有时提取的xpath无法提取一些数据。例如,当描述非常长或嵌套很多元素时。在这种情况下,目前我们建议手动编辑缓存中的选择器。但这些情况不应经常发生。如果遇到其他问题,请创建一个问题。

贡献

我们欢迎所有贡献。要贡献 - 克隆仓库,创建一个新分支,进行更改并创建一个拉取请求。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码发行版

oxyparser-0.1.0.tar.gz (13.1 kB 查看散列值)

上传时间 源代码

构建发行版

oxyparser-0.1.0-py3-none-any.whl (16.0 kB 查看散列值)

上传时间 Python 3

由以下机构支持