3.4 KiB
汎用ページパーサーを提供しており、このパーサーは信頼できるソースから記事リストをインテリジェントに取得します。各記事URLに対して、まず gne
を使用して解析を試み、失敗した場合は llm
を使用して解析します。
このソリューションにより、ほとんどの一般的なニュースサイトやポータルサイトからの情報をスキャンして抽出することができます。
しかし、より理想的かつ効率的なスキャンを実現するために、ユーザー自身のビジネスシナリオに応じた特定のソース専用のパーサーを開発することを強くお勧めします。
また、WeChat 公共アカウントの記事(mp.weixin.qq.com)に特化したパーサーも提供しています。
特定のソース専用に開発したパーサーをこのリポジトリに貢献していただける場合は、大変感謝いたします!
特定ソースパーサー開発規範
規範
覚えておいてください:それは非同期関数でなければなりません
- パーサーは、記事リストページと記事詳細ページをインテリジェントに区別できる必要があります。
- パーサーの入力パラメーターは
url
とlogger
のみを含むべきです:url
はソースの完全なアドレス(str
タイプ)logger
はロギングオブジェクト(専用のロガーを構成しないでください)
- パーサーの出力は
flag
とresult
を含み、形式はtuple[int, Union[set, dict]]
:-
url
が記事リストページの場合、flag
は1
を返し、result
はすべての記事ページURLのコレクション(set
)を返します。 -
url
が記事ページの場合、flag
は11
を返し、result
はすべての記事詳細(dict
)を返します。形式は以下の通りです:{'url': str, 'title': str, 'author': str, 'publish_time': str, 'content': str, 'abstract': str, 'images': [str]}
注意:
title
とcontent
は空であってはなりません。注意:
publish_time
の形式は"%Y%m%d"
(日付のみ、-
はなし)である必要があります。スクレイパーが取得できない場合は、当日の日付を使用してください。 -
解析に失敗した場合、
flag
は0
を返し、result
は空の辞書{}
を返します。pipeline
はflag
0 を受け取ると他の解析ソリューション(存在する場合)を試みます。 -
ページの取得に失敗した場合(例えば、ネットワークの問題)、
flag
は-7
を返し、result
は空の辞書{}
を返します。pipeline
はflag
-7 を受け取ると、同一プロセス内では再解析を試みません。
-
登録
スクレイパーを作成したら、このフォルダにプログラムを配置し、__init__.py
の scraper_map
にスクレイパーを次のように登録してください:
{'domain': 'スクレイパー関数名'}
domain の取得には urllib.parse を使用することをお勧めします:
from urllib.parse import urlparse
parsed_url = urlparse("l'URL du site")
domain = parsed_url.netloc