今日は PHPムービー小さなクローラーを作成します。
simple_html_dom のデータ収集サンプルを使用してみましょう。これは PHP ライブラリであり、簡単に始めることができます。
simple_html_dom は、php を使用して HTML ドキュメントを解析するのに役立ちます。この PHP カプセル化クラスを通じて、HTML ドキュメントを簡単に解析し、HTML 要素を操作できます (PHP5+ 以降)
ダウンロード アドレス: https://github.com/samacs/simple_html_dom
以下では、http://github.com/samacs/simple_html_dom を使用します。 www.paopaotv.com http://paopaotv.com/tv-type-id-5-pg-1.html のリスト ページでは、ページ上のリスト データとコンテンツをキャプチャする例として、アルファベット順モードで表示されたリストを取り上げています。
<span style="color: #008080;"> 1</span> <span style="color: #000000;">php </span><span style="color: #008080;"> 2</span> <span style="color: #0000ff;">include_once</span> 'simple_html_dom.php'<span style="color: #000000;">; </span><span style="color: #008080;"> 3</span> <span style="color: #008000;">//</span><span style="color: #008000;">获取html数据转化为对象</span> <span style="color: #008080;"> 4</span> <span style="color: #800080;">$html</span> = file_get_html('http://paopaotv.com/tv-type-id-5-pg-1.html'<span style="color: #000000;">); </span><span style="color: #008080;"> 5</span> <span style="color: #008000;">//</span><span style="color: #008000;">A-Z的字母列表每条数据是在id=letter-focus 的div内class= letter-focus-item的dl标签内,用find方法查找即为 </span> <span style="color: #008080;"> 6</span> <span style="color: #800080;">$listData</span>=<span style="color: #800080;">$html</span>->find("#letter-focus .letter-focus-item");<span style="color: #008000;">//</span><span style="color: #008000;">$listData为数组对象</span> <span style="color: #008080;"> 7</span> <span style="color: #0000ff;">foreach</span>(<span style="color: #800080;">$listData</span> <span style="color: #0000ff;">as</span><span style="color: #800080;">$key</span>=><span style="color: #800080;">$eachRowData</span><span style="color: #000000;">){ </span><span style="color: #008080;"> 8</span> <span style="color: #800080;">$filmName</span>=<span style="color: #800080;">$eachRowData</span>->find("dd span",0)->plaintext;<span style="color: #008000;">//</span><span style="color: #008000;">获取影视名称</span> <span style="color: #008080;"> 9</span> <span style="color: #800080;">$filmUrl</span>=<span style="color: #800080;">$eachRowData</span>->find("dd a",0)->href;<span style="color: #008000;">//</span><span style="color: #008000;">获取dd标签下影视对应的地址 </span><span style="color: #008080;">10</span> <span style="color: #008000;">//获取影视的详细信息</span> <span style="color: #008080;">11</span> <span style="color: #800080;">$filmInfo</span>=file_get_html("http://paopaotv.com".<span style="color: #800080;">$filmUrl</span><span style="color: #000000;">); </span><span style="color: #008080;">12</span> <span style="color: #800080;">$filmDetail</span>=<span style="color: #800080;">$filmInfo</span>->find(".info dl"<span style="color: #000000;">); </span><span style="color: #008080;">13</span> <span style="color: #0000ff;">foreach</span>(<span style="color: #800080;">$filmDetail</span> <span style="color: #0000ff;">as</span> <span style="color: #800080;">$film</span><span style="color: #000000;">){ </span><span style="color: #008080;">14</span> <span style="color: #800080;">$info</span>=<span style="color: #800080;">$film</span>->find("dd"<span style="color: #000000;">); </span><span style="color: #008080;">15</span> <span style="color: #800080;">$row</span>=<span style="color: #0000ff;">null</span><span style="color: #000000;">; </span><span style="color: #008080;">16</span> <span style="color: #0000ff;">foreach</span>(<span style="color: #800080;">$info</span> <span style="color: #0000ff;">as</span> <span style="color: #800080;">$childInfo</span><span style="color: #000000;">){ </span><span style="color: #008080;">17</span> <span style="color: #800080;">$row</span>[]=<span style="color: #800080;">$childInfo</span>-><span style="color: #000000;">plaintext; </span><span style="color: #008080;">18</span> <span style="color: #000000;">} </span><span style="color: #008080;">19</span> <span style="color: #800080;">$cate</span>[<span style="color: #800080;">$key</span>][]=<span style="color: #008080;">join</span>(",",<span style="color: #800080;">$row</span>);<span style="color: #008000;">//</span><span style="color: #008000;">将影视的信息存放到数组中</span> <span style="color: #008080;">20</span> <span style="color: #000000;">} </span><span style="color: #008080;">21</span> }
このようにして、simple_html_dom を通じて、paopaotv.com の映画とテレビのリストの情報と、映画とテレビの特定の情報をキャプチャできます。その後、ビデオ アドレス情報をキャプチャし続けることができます。映画とテレビの詳細ページにアクセスすると、映画とテレビのすべての情報がデータベースに保存されます。
以下は、simple_html_dom の一般的に使用される属性とメソッドです:
<span style="color: #008080;"> 1</span> <span style="color: #800080;">$html</span> = file_get_html('http://paopaotv.com/tv-type-id-5-pg-1.html'<span style="color: #000000;">); </span><span style="color: #008080;"> 2</span> <span style="color: #800080;">$e</span> = <span style="color: #800080;">$html</span>->find("div", 0<span style="color: #000000;">); </span><span style="color: #008080;"> 3</span> <span style="color: #008000;">//</span><span style="color: #008000;">标签</span> <span style="color: #008080;"> 4</span> <span style="color: #800080;">$e</span>-><span style="color: #000000;">tag; </span><span style="color: #008080;"> 5</span> <span style="color: #008000;">//</span><span style="color: #008000;">外文本</span> <span style="color: #008080;"> 6</span> <span style="color: #800080;">$e</span>-><span style="color: #000000;">outertext; </span><span style="color: #008080;"> 7</span> <span style="color: #008000;">//</span><span style="color: #008000;">内文本</span> <span style="color: #008080;"> 8</span> <span style="color: #800080;">$e</span>-><span style="color: #000000;">innertext; </span><span style="color: #008080;"> 9</span> <span style="color: #008000;">//</span><span style="color: #008000;">纯文本</span> <span style="color: #008080;">10</span> <span style="color: #800080;">$e</span>-><span style="color: #000000;">plaintext; </span><span style="color: #008080;">11</span> <span style="color: #008000;">//</span><span style="color: #008000;">子元素</span> <span style="color: #008080;">12</span> <span style="color: #800080;">$e</span>->children ( [int <span style="color: #800080;">$index</span><span style="color: #000000;">] ); </span><span style="color: #008080;">13</span> <span style="color: #008000;">//</span><span style="color: #008000;">父元素</span> <span style="color: #008080;">14</span> <span style="color: #800080;">$e</span>-><span style="color: #000000;">parent (); </span><span style="color: #008080;">15</span> <span style="color: #008000;">//</span><span style="color: #008000;">第一个子元素</span> <span style="color: #008080;">16</span> <span style="color: #800080;">$e</span>-><span style="color: #000000;">first_child (); </span><span style="color: #008080;">17</span> <span style="color: #008000;">//</span><span style="color: #008000;">最后一个子元素</span> <span style="color: #008080;">18</span> <span style="color: #800080;">$e</span>-><span style="color: #000000;">last_child (); </span><span style="color: #008080;">19</span> <span style="color: #008000;">//</span><span style="color: #008000;">后一个兄弟元素</span> <span style="color: #008080;">20</span> <span style="color: #800080;">$e</span>-><span style="color: #000000;">next_sibling (); </span><span style="color: #008080;">21</span> <span style="color: #008000;">//</span><span style="color: #008000;">前一个兄弟元素</span> <span style="color: #008080;">22</span> <span style="color: #800080;">$e</span>-><span style="color: #000000;">prev_sibling (); </span><span style="color: #008080;">23</span> <span style="color: #008000;">//</span><span style="color: #008000;">标签数组</span> <span style="color: #008080;">24</span> <span style="color: #800080;">$ret</span> = <span style="color: #800080;">$html</span>->find('a'<span style="color: #000000;">); </span><span style="color: #008080;">25</span> <span style="color: #008000;">//</span><span style="color: #008000;">第一个a标签</span> <span style="color: #008080;">26</span> <span style="color: #800080;">$ret</span> = <span style="color: #800080;">$html</span>->find('a', 0);
詳しい使い方は公式マニュアルをご参照ください。
とても簡単なことではありませんか?ご質問がございましたら、お気軽に