php - 必要なデータをクロールするための通常のルールを確認するのを手伝ってもらえますか?
过去多啦不再A梦
过去多啦不再A梦 2017-05-16 13:16:30
0
2
630

クロールされるページのhtml:

リーリー

B. 私が書いたクローリング正規表現:

リーリー

$reg_list = "/<ps*topClassName='top1's*topSwitch='on's*productId='(d+)'s*productName='[x7f-xff]+'s*class='productPicListForm's*id='[A-z0-9]+'s*faiWidth='d+'s*faiHeight='d+'s*faiWidthOr='d+'s*faiHeightOr='d+'>s*<tables*id='w+'s*class='formTable's*cellpadding='d*'s*cellspacing='d+'>s*<tr>s*<tds*class='imgp'>s*<tables*cellpadding='d+'s*cellspacing='d+'>s*<tr>s*<td>s*<as*hidefocus='true's*href='[A-z0-9. -_]+'s*target='(_blank|_self)'>s*<imgs*alt='([x7f-xff]+)'s*title='[x7f-xffA-z0-9-]*'s*src='((http|https)://[A-z0-9./!-]+)'s*/>s*</a>s*</td>s*</tr>s*</table>s*</td>s*<tds*style='[A-z0-9:-_#]*'s*class='propList'>s*<tds*style='[A-z0-9:-_#]*'s*class='propList'>s*<p style='[A-z0-9:-_#]*' class='propps*productNames*'>s*<as*class='fk-productName's*hidefocus='true's*href='([A-z0-9-._]+)'s*target='(_blank|_self)'s*title='[x7f-xff]+'>[x7f-xff]+</a>s*</p>s*<ps*class='propps*productPropd*s*'>s*<spans*class='propNames*fk-prop-name'>主营:</span>s*<spans*class='propValues*fk-prop-other's*style='[A-z0-9x7f-xff: -_#;]*'>([x7f-xff ]+_-.)</span>s*</p>s*<ps*class='propps*productProp4s*'>s*<spans*class='propNames*fk-prop-name'>地址:</span>s*<spans*class='propValues*fk-prop-other's*style='[A-z0-9x7f-xff: -_#;]*'>([x7f-xff -_.]+)</span>s*</p>s*</td>s*</td>s*</tr>s*</table>s*</p>/";

エディターに表示される(スクリーンショット):

これが非常に複雑な理由は、コンテンツの一部を取得したいためです:

ここが重要なポイントです。非常に複雑なので、必要なコンテンツを正しくキャプチャできるように正規表現をデバッグするのは不可能です。どのようにしてこのような複雑な正規表現を作成し、データをキャプチャできるようになるまでデバッグするかを教えてください。欲しいの? ?

过去多啦不再A梦
过去多啦不再A梦

全員に返信(2)
黄舟

symfony/dom-crawler メソッドを再び使用する時期が来ました。 DOM Dafa は良いことです、ルールを守れば安全です

composer.json

リーリー

a.php

リーリー

出力

いいねを押す +0
巴扎黑

DOM は当然より良い選択ですが、通常の方法でそれを行うことが必ずしも不可能ではありません。

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート