こんにちは、私の本のコレクションに関する事実データのデータベースを構築しています。つまり、タイトル、ページ数、幅、長さ、著者、著者の生年月日、出版社名、出版社の住所などです。そのために、ISBN を入力すると、アプリケーションがその情報を Web から取得します。私が自分で定義したいくつかのサイトから、必要なすべての情報が含まれていることがわかっています。現時点では 3 つのサイトであり、おそらく 5 つを超えることはありません。これらの各サイトで、isbn をクエリ パラメーターとして使用して検索ページを CURL し、検索ページに表示されるリンクを抽出します。次に、これらのリンクを CURL し、上記の情報 (出生、タイトル、出版社など) を抽出します。彼ら。したがって、私のスクレイピングの範囲は、3 x (検索ページ + 情報ページ) = 6 HTML ページです。
これらのページはすべて、ばかげた方法で関連情報を提示しています。たとえば、発行者情報には、アドレス、電話番号、電子メール、ウェブサイトが 1 つの HTML タグに含まれており、区切り文字として brs が使用されています。一部のサイト運営者はこれらのフィールドの 1 つを持っていません。そのため、brs の数が常に同じであるとは限りません。これらのサイトの別のサイトでは、ほとんどの情報に lis がありますが、あるフィールドには a、別のフィールドには p、別のフィールドには div があります。等...
正規表現を使用して、次にDOMパーサーを使用して、必要なものを正常に抽出しました。最終的に、情報のフィールドを抽出するためにより多くの操作が必要になるため、DOM パーサーを使用するとコードの可読性が大幅に低下します。例として:
<li>Né le : 23/12/1990 (ANGLETERRE)</li>
男性の著者の誕生日の場合、女性の著者の生年月日も次のように表示されます
<li>Née le : 11/07/1832</li>
DOM パーサーでは、いくつかの重要な情報が ap、div、および a にあるため、lis のリストを取得する必要がありますが、これでは十分ではありません。次に、li ごとに、li に「Né le」または「Née le」が含まれているかどうかを確認する必要があります。これは、ifs または正規表現のいずれかです。括弧で囲まれた出生地があるかどうかを確認し、それを抽出します。少なくともあと 2 回の操作。正規表現を使用すると、1 行のコードで取得できます。
さらに、パーサーはどのように正確に構築されますか? 基礎となるコードは正規表現を実行しますか、それとも何か他のものですか? もしそうなら、高速で汚い正規表現に対して、解析エンジンを使用すると、高いパフォーマンスコストがかかると思いますか?
ここに私の 2 つの質問があります。DOM パーサーはどのように構築されているのでしょうか。そして第二に、6 ~ 10 ページを解析するという非常に限られた範囲で、主に個人的な使用のために、コードの読みやすさ (および最初の質問に応じたパフォーマンス) を求めるべきではありませんか?
よろしく、 セバスチャン