PHPQueryでスクレイピングをはじめたものです。
あることで躓いたので質問させて頂きました。
前提・実現したいこと
html
1<div> 2 <h4 class="title">1</h4> 3 <div class="link-select"> 4 <ul> 5 <li><a href="?l=1-1">1番</a></li> 6 <li><a href="?l=1-2">2番</a></li> 7 </ul> 8 </div> 9 10 <h4 class="title">2</h4> 11 <div class="link-select"> 12 <ul> 13 <li><a href="?l=2-1">1番</a></li> 14 <li><a href="?l=2-2">2番</a></li> 15 </ul> 16 17 <h4 class="title">3</h4> 18 <div class="link-select"> 19 <ul> 20 <li><a href="?l=3-1">1番</a></li> 21 <li><a href="?l=3-2">2番</a></li> 22 <li><a href="?l=3-3">3番</a></li> 23 </ul> 24 25 <h4 class="title">4</h4> 26 <div class="link-select"> 27 <ul> 28 <li><a href="?l=4-1">1番</a></li> 29 </ul> 30 </div> 31</div>
上のようなHTMLの「h4(.title)」と「href(a)」をまとめて、配列にしたいです。
ソースコード
php
1<?php 2require_once("phpQuery-onefile.php"); 3$html = file_get_contents("1.html"); 4$doc = phpQuery::newDocument($html); 5 6// ここから先が分からないため質問させていただきました。
実現したいこと
実行結果(array)
array ( '1' => '1番','?l=1-1','2番','?l=1-2' '2' => '1番','?l=2-1','2番','?l=2-2' '3' => '1番','?l=3-1','2番','?l=3-2','3番','?l=3-3' '4' => '1番','?l=4-1' )
「①」と「aタグのhref」をセットにして配列を作りたいです。
補足情報(FW/ツールのバージョンなど)
Windows10 Home
xampp v3.2.4
その他
質問内容に不備や、分からないことがありましたらコメントお願いいたします。追記などさせていただきます。
追記
2021/09/20 22:10
以下のように作成してみました。
(1-1, 1-2, 2-1 などのようにわかりやすくしていますが、実際は規則性のない文字列になっています。)
「.title」「aタグの文字,href」を配列にする事はできていますが、実現したい事のようにまとめることができていません。
php
1<?php 2require_once("phpQuery-onefile.php"); 3$html = file_get_contents("1.html"); 4$doc = phpQuery::newDocument($html); 5 6 7// .title 8$titles = $doc->find(".title"); 9foreach($titles as $title){ 10 $title_l[] = pq($title)->text(); 11} 12var_dump($title_l); 13// array(4) { [0]=> string(1) "1" [1]=> string(1) "2" [2]=> string(1) "3" [3]=> string(1) "4" } 14 15// a 16$links = $doc->find("a"); 17foreach($links as $link){ 18 $link_l[] = pq($link)->text(); 19 $link_h_l[] = pq($link)->attr("href"); 20} 21var_dump($link_l); 22// array(8) { [0]=> string(6) "1番" [1]=> string(6) "2番" [2]=> string(6) "1番" [3]=> string(6) "2番" [4]=> string(6) "1番" [5]=> string(6) "2番" [6]=> string(6) "3番" [7]=> string(6) "1番" } 23var_dump($link_h_l); 24// array(8) { [0]=> string(6) "?l=1-1" [1]=> string(6) "?l=1-2" [2]=> string(6) "?l=2-1" [3]=> string(6) "?l=2-2" [4]=> string(6) "?l=3-1" [5]=> string(6) "?l=3-2" [6]=> string(6) "?l=3-3" [7]=> string(6) "?l=4-1" }
回答1件
あなたの回答
tips
プレビュー