webdetakit


Namewebdetakit JSON
Version 0.1.0 PyPI version JSON
download
home_pagehttps://github.com/Kongou173/webdetakit
SummaryA powerful toolkit for web scraping and data normalization.
upload_time2025-07-18 10:10:49
maintainerNone
docs_urlNone
authorYour Name
requires_python>=3.8
licenseNone
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            
# WebDetaKit: ウェブデータ抽出 & 正規化ツールキット

**WebDetaKit** は、ウェブサイトから情報を効率的に抽出し、構造化されたデータ(CSV、JSON、Pandas DataFrame)に正規化するためのPythonツールキットです。シンプルなAPIで、ウェブスクレイピングの基本的なニーズに対応します。

## 主な機能

* **HTML取得**: 指定されたURLからウェブページのHTMLコンテンツを取得します。
* **データ抽出**: CSSセレクタを使用して、HTMLから特定のテキストや属性値(例: リンクのURL、画像のソース)を抽出します。
* **データ正規化**: 抽出した複数のデータリストを結合し、Pandas DataFrameとして整形します。
* **ファイル保存**: 整形されたDataFrameをCSVまたはJSON形式でファイルに保存します。

## インストール

WebDetaKit は `pip` を使って簡単にインストールできます。

```bash
pip install webdetakit
使用方法
1. HTMLコンテンツの取得

Python
from webdetakit.core import fetch_html

url = "[https://www.example.com](https://www.example.com)"
html_content = fetch_html(url)

if html_content:
    print("HTMLコンテンツを取得しました。")
else:
    print("HTMLコンテンツの取得に失敗しました。")
2. データ(テキスト)の抽出

Python
from webdetakit.core import extract_text

# 例として取得したHTMLコンテンツを使用
# html_content は fetch_html で取得したもの
# もしくはテスト用のダミーHTMLでも可
dummy_html = """
<html>
<body>
    <h1>メインタイトル</h1>
    <p class="summary">これは要約の段落です。</p>
    <div>
        <span class="item-name">商品A</span>
        <span class="price">1000円</span>
    </div>
    <div>
        <span class="item-name">商品B</span>
        <span class="price">2000円</span>
    </div>
</body>
</html>
"""

# H1タグのテキストを抽出
titles = extract_text(dummy_html, "h1")
print(f"タイトル: {titles}")

# 'summary' クラスを持つPタグのテキストを抽出
summaries = extract_text(dummy_html, "p.summary")
print(f"要約: {summaries}")

# 'item-name' クラスを持つspanタグのテキストをすべて抽出
item_names = extract_text(dummy_html, "span.item-name")
print(f"商品名: {item_names}")
3. データ(属性値)の抽出

Python
from webdetakit.core import extract_attribute

# 例としてHTMLコンテンツを使用
dummy_html_links = """
<html>
<body>
    <a href="/page1.html">ページ1</a>
    <img src="/images/pic1.jpg" alt="写真1">
    <a href="[https://www.google.com](https://www.google.com)">Google</a>
</body>
</html>
"""

# aタグのhref属性を抽出
links = extract_attribute(dummy_html_links, "a", "href")
print(f"リンクURL: {links}")

# imgタグのsrc属性を抽出
image_sources = extract_attribute(dummy_html_links, "img", "src")
print(f"画像ソース: {image_sources}")
4. データの正規化と保存

Python
from webdetakit.core import normalize_to_dataframe, save_dataframe_to_csv, save_dataframe_to_json
import pandas as pd

# 抽出したデータの例(リストの長さは揃っている必要があります)
data_to_normalize = {
    "商品名": ["商品A", "商品B", "商品C"],
    "価格": ["1000円", "2000円", "3000円"],
    "URL": ["/a.html", "/b.html", "/c.html"]
}

# Pandas DataFrameに正規化
df = normalize_to_dataframe(data_to_normalize)
print("\n正規化されたDataFrame:")
print(df)

# CSVファイルとして保存
save_dataframe_to_csv(df, "products.csv")
# 結果: products.csv が作成されます

# JSONファイルとして保存
save_dataframe_to_json(df, "products.json")
# 結果: products.json が作成されます
開発者向け情報
開発環境のセットアップ

プロジェクトをクローンした後、webdetakit_project ディレクトリ内で以下のコマンドを実行し、開発に必要な依存関係をインストールします。

Bash
git clone [https://github.com/Kongou173/webdetakit_project.git](https://github.com/Kongou173/webdetakit_project.git) # もしGitHubにリポジトリがある場合
cd webdetakit_project
pip install -e .[dev]
テストの実行

開発中にテストを実行するには、プロジェクトのルートディレクトリで pytest を使用します。

Bash
cd webdetakit_project
pytest
貢献
このプロジェクトへの貢献を歓迎します!バグ報告、機能リクエスト、プルリクエストなど、お気軽にお寄せください。

ライセンス
このプロジェクトは MIT ライセンスの下で公開されています。詳細については LICENSE ファイルをご覧ください。

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/Kongou173/webdetakit",
    "name": "webdetakit",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": null,
    "author": "Your Name",
    "author_email": "jigengtongsheng@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/92/fb/9121b8596f9b5c26496a581441e7193995d83e6ede2431a1e8e6302456ea/webdetakit-0.1.0.tar.gz",
    "platform": null,
    "description": "\n# WebDetaKit: \u30a6\u30a7\u30d6\u30c7\u30fc\u30bf\u62bd\u51fa & \u6b63\u898f\u5316\u30c4\u30fc\u30eb\u30ad\u30c3\u30c8\n\n**WebDetaKit** \u306f\u3001\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u304b\u3089\u60c5\u5831\u3092\u52b9\u7387\u7684\u306b\u62bd\u51fa\u3057\u3001\u69cb\u9020\u5316\u3055\u308c\u305f\u30c7\u30fc\u30bf\uff08CSV\u3001JSON\u3001Pandas DataFrame\uff09\u306b\u6b63\u898f\u5316\u3059\u308b\u305f\u3081\u306ePython\u30c4\u30fc\u30eb\u30ad\u30c3\u30c8\u3067\u3059\u3002\u30b7\u30f3\u30d7\u30eb\u306aAPI\u3067\u3001\u30a6\u30a7\u30d6\u30b9\u30af\u30ec\u30a4\u30d4\u30f3\u30b0\u306e\u57fa\u672c\u7684\u306a\u30cb\u30fc\u30ba\u306b\u5bfe\u5fdc\u3057\u307e\u3059\u3002\n\n## \u4e3b\u306a\u6a5f\u80fd\n\n* **HTML\u53d6\u5f97**: \u6307\u5b9a\u3055\u308c\u305fURL\u304b\u3089\u30a6\u30a7\u30d6\u30da\u30fc\u30b8\u306eHTML\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002\n* **\u30c7\u30fc\u30bf\u62bd\u51fa**: CSS\u30bb\u30ec\u30af\u30bf\u3092\u4f7f\u7528\u3057\u3066\u3001HTML\u304b\u3089\u7279\u5b9a\u306e\u30c6\u30ad\u30b9\u30c8\u3084\u5c5e\u6027\u5024\uff08\u4f8b: \u30ea\u30f3\u30af\u306eURL\u3001\u753b\u50cf\u306e\u30bd\u30fc\u30b9\uff09\u3092\u62bd\u51fa\u3057\u307e\u3059\u3002\n* **\u30c7\u30fc\u30bf\u6b63\u898f\u5316**: \u62bd\u51fa\u3057\u305f\u8907\u6570\u306e\u30c7\u30fc\u30bf\u30ea\u30b9\u30c8\u3092\u7d50\u5408\u3057\u3001Pandas DataFrame\u3068\u3057\u3066\u6574\u5f62\u3057\u307e\u3059\u3002\n* **\u30d5\u30a1\u30a4\u30eb\u4fdd\u5b58**: \u6574\u5f62\u3055\u308c\u305fDataFrame\u3092CSV\u307e\u305f\u306fJSON\u5f62\u5f0f\u3067\u30d5\u30a1\u30a4\u30eb\u306b\u4fdd\u5b58\u3057\u307e\u3059\u3002\n\n## \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\n\nWebDetaKit \u306f `pip` \u3092\u4f7f\u3063\u3066\u7c21\u5358\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u304d\u307e\u3059\u3002\n\n```bash\npip install webdetakit\n\u4f7f\u7528\u65b9\u6cd5\n1. HTML\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u53d6\u5f97\n\nPython\nfrom webdetakit.core import fetch_html\n\nurl = \"[https://www.example.com](https://www.example.com)\"\nhtml_content = fetch_html(url)\n\nif html_content:\n    print(\"HTML\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u53d6\u5f97\u3057\u307e\u3057\u305f\u3002\")\nelse:\n    print(\"HTML\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u53d6\u5f97\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002\")\n2. \u30c7\u30fc\u30bf\uff08\u30c6\u30ad\u30b9\u30c8\uff09\u306e\u62bd\u51fa\n\nPython\nfrom webdetakit.core import extract_text\n\n# \u4f8b\u3068\u3057\u3066\u53d6\u5f97\u3057\u305fHTML\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u4f7f\u7528\n# html_content \u306f fetch_html \u3067\u53d6\u5f97\u3057\u305f\u3082\u306e\n# \u3082\u3057\u304f\u306f\u30c6\u30b9\u30c8\u7528\u306e\u30c0\u30df\u30fcHTML\u3067\u3082\u53ef\ndummy_html = \"\"\"\n<html>\n<body>\n    <h1>\u30e1\u30a4\u30f3\u30bf\u30a4\u30c8\u30eb</h1>\n    <p class=\"summary\">\u3053\u308c\u306f\u8981\u7d04\u306e\u6bb5\u843d\u3067\u3059\u3002</p>\n    <div>\n        <span class=\"item-name\">\u5546\u54c1A</span>\n        <span class=\"price\">1000\u5186</span>\n    </div>\n    <div>\n        <span class=\"item-name\">\u5546\u54c1B</span>\n        <span class=\"price\">2000\u5186</span>\n    </div>\n</body>\n</html>\n\"\"\"\n\n# H1\u30bf\u30b0\u306e\u30c6\u30ad\u30b9\u30c8\u3092\u62bd\u51fa\ntitles = extract_text(dummy_html, \"h1\")\nprint(f\"\u30bf\u30a4\u30c8\u30eb: {titles}\")\n\n# 'summary' \u30af\u30e9\u30b9\u3092\u6301\u3064P\u30bf\u30b0\u306e\u30c6\u30ad\u30b9\u30c8\u3092\u62bd\u51fa\nsummaries = extract_text(dummy_html, \"p.summary\")\nprint(f\"\u8981\u7d04: {summaries}\")\n\n# 'item-name' \u30af\u30e9\u30b9\u3092\u6301\u3064span\u30bf\u30b0\u306e\u30c6\u30ad\u30b9\u30c8\u3092\u3059\u3079\u3066\u62bd\u51fa\nitem_names = extract_text(dummy_html, \"span.item-name\")\nprint(f\"\u5546\u54c1\u540d: {item_names}\")\n3. \u30c7\u30fc\u30bf\uff08\u5c5e\u6027\u5024\uff09\u306e\u62bd\u51fa\n\nPython\nfrom webdetakit.core import extract_attribute\n\n# \u4f8b\u3068\u3057\u3066HTML\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u4f7f\u7528\ndummy_html_links = \"\"\"\n<html>\n<body>\n    <a href=\"/page1.html\">\u30da\u30fc\u30b81</a>\n    <img src=\"/images/pic1.jpg\" alt=\"\u5199\u771f1\">\n    <a href=\"[https://www.google.com](https://www.google.com)\">Google</a>\n</body>\n</html>\n\"\"\"\n\n# a\u30bf\u30b0\u306ehref\u5c5e\u6027\u3092\u62bd\u51fa\nlinks = extract_attribute(dummy_html_links, \"a\", \"href\")\nprint(f\"\u30ea\u30f3\u30afURL: {links}\")\n\n# img\u30bf\u30b0\u306esrc\u5c5e\u6027\u3092\u62bd\u51fa\nimage_sources = extract_attribute(dummy_html_links, \"img\", \"src\")\nprint(f\"\u753b\u50cf\u30bd\u30fc\u30b9: {image_sources}\")\n4. \u30c7\u30fc\u30bf\u306e\u6b63\u898f\u5316\u3068\u4fdd\u5b58\n\nPython\nfrom webdetakit.core import normalize_to_dataframe, save_dataframe_to_csv, save_dataframe_to_json\nimport pandas as pd\n\n# \u62bd\u51fa\u3057\u305f\u30c7\u30fc\u30bf\u306e\u4f8b\uff08\u30ea\u30b9\u30c8\u306e\u9577\u3055\u306f\u63c3\u3063\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\uff09\ndata_to_normalize = {\n    \"\u5546\u54c1\u540d\": [\"\u5546\u54c1A\", \"\u5546\u54c1B\", \"\u5546\u54c1C\"],\n    \"\u4fa1\u683c\": [\"1000\u5186\", \"2000\u5186\", \"3000\u5186\"],\n    \"URL\": [\"/a.html\", \"/b.html\", \"/c.html\"]\n}\n\n# Pandas DataFrame\u306b\u6b63\u898f\u5316\ndf = normalize_to_dataframe(data_to_normalize)\nprint(\"\\n\u6b63\u898f\u5316\u3055\u308c\u305fDataFrame:\")\nprint(df)\n\n# CSV\u30d5\u30a1\u30a4\u30eb\u3068\u3057\u3066\u4fdd\u5b58\nsave_dataframe_to_csv(df, \"products.csv\")\n# \u7d50\u679c: products.csv \u304c\u4f5c\u6210\u3055\u308c\u307e\u3059\n\n# JSON\u30d5\u30a1\u30a4\u30eb\u3068\u3057\u3066\u4fdd\u5b58\nsave_dataframe_to_json(df, \"products.json\")\n# \u7d50\u679c: products.json \u304c\u4f5c\u6210\u3055\u308c\u307e\u3059\n\u958b\u767a\u8005\u5411\u3051\u60c5\u5831\n\u958b\u767a\u74b0\u5883\u306e\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\n\n\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u30af\u30ed\u30fc\u30f3\u3057\u305f\u5f8c\u3001webdetakit_project \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u5185\u3067\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3001\u958b\u767a\u306b\u5fc5\u8981\u306a\u4f9d\u5b58\u95a2\u4fc2\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002\n\nBash\ngit clone [https://github.com/Kongou173/webdetakit_project.git](https://github.com/Kongou173/webdetakit_project.git) # \u3082\u3057GitHub\u306b\u30ea\u30dd\u30b8\u30c8\u30ea\u304c\u3042\u308b\u5834\u5408\ncd webdetakit_project\npip install -e .[dev]\n\u30c6\u30b9\u30c8\u306e\u5b9f\u884c\n\n\u958b\u767a\u4e2d\u306b\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3059\u308b\u306b\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30eb\u30fc\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3067 pytest \u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\n\nBash\ncd webdetakit_project\npytest\n\u8ca2\u732e\n\u3053\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3078\u306e\u8ca2\u732e\u3092\u6b53\u8fce\u3057\u307e\u3059\uff01\u30d0\u30b0\u5831\u544a\u3001\u6a5f\u80fd\u30ea\u30af\u30a8\u30b9\u30c8\u3001\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u306a\u3069\u3001\u304a\u6c17\u8efd\u306b\u304a\u5bc4\u305b\u304f\u3060\u3055\u3044\u3002\n\n\u30e9\u30a4\u30bb\u30f3\u30b9\n\u3053\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306f MIT \u30e9\u30a4\u30bb\u30f3\u30b9\u306e\u4e0b\u3067\u516c\u958b\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f LICENSE \u30d5\u30a1\u30a4\u30eb\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A powerful toolkit for web scraping and data normalization.",
    "version": "0.1.0",
    "project_urls": {
        "Homepage": "https://github.com/Kongou173/webdetakit"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "3bfe4814c791e8c0ee8b8fd1083a4aa867670250442cc2cb48fb8c4756583269",
                "md5": "df752ec0cc50b0aea2922d682de4a8a3",
                "sha256": "64dd0b293435d77b797fc1eb5e075afc702c2f7da38bf2c278eb172444e37c93"
            },
            "downloads": -1,
            "filename": "webdetakit-0.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "df752ec0cc50b0aea2922d682de4a8a3",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 4274,
            "upload_time": "2025-07-18T10:10:48",
            "upload_time_iso_8601": "2025-07-18T10:10:48.586176Z",
            "url": "https://files.pythonhosted.org/packages/3b/fe/4814c791e8c0ee8b8fd1083a4aa867670250442cc2cb48fb8c4756583269/webdetakit-0.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "92fb9121b8596f9b5c26496a581441e7193995d83e6ede2431a1e8e6302456ea",
                "md5": "226ac3030769044bfdf6f0d3d49738e4",
                "sha256": "db80b152a756b2ef382637b143f9456649ade998b944f82b2cdb41905facbdba"
            },
            "downloads": -1,
            "filename": "webdetakit-0.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "226ac3030769044bfdf6f0d3d49738e4",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 5826,
            "upload_time": "2025-07-18T10:10:49",
            "upload_time_iso_8601": "2025-07-18T10:10:49.640899Z",
            "url": "https://files.pythonhosted.org/packages/92/fb/9121b8596f9b5c26496a581441e7193995d83e6ede2431a1e8e6302456ea/webdetakit-0.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-18 10:10:49",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "Kongou173",
    "github_project": "webdetakit",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "webdetakit"
}
        
Elapsed time: 2.08400s