質問: $db->prepare($sql); $stmt->execute([ ':title' => $title, ':url' => $url99 ]); } } //セッションを終了する curl_close($ch); ``` プログラムの組み方に間違いがあり上手くいっていません。: このように空白の行(string(0) "")が取得する度に入ってしまいます。 今回はタイトルとURLを取得しているので 2つの行のstring(0) ""が入ってしまっています。 ``` string(0) "" string(0) "" string(161) "【ネット】新潟・米山隆一知事が石平氏投稿に「吐き気を催すほど醜悪」とツイート。「差別発言だ」との批判相次ぐ " string(54) "http://site-1.html" string(0) "" string(0) "" string(83) "【北朝鮮】アントニオ猪木議員、朝鮮労働党副委員長と会談 " string(54) "http://site-2.html" string(0) "" string(0) "" string(191) "【このハゲー!】豊田議員「辞めない」「必死で働き償う」" string(54) "http://site-3.html" ``` mysqlにて保存を行った際にも「空白の行」が間に挿入されてしまいます。 ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/694383328a4f0123104628e903b0ae22.jpeg) これだとサイトに表示する際やデータベースの操作でも問題が起きてしまうので なんとか「スクレイピングを実施した際に空白の行が入らない」ようにする為に 試行錯誤を何度も行ったのですが上手くいきません。 解決方法をご存知の方や 何かお気付きの点がありましたら教えて頂けると、とても嬉しいです。 お力をお貸し頂けたら嬉しいです。 どうかよろしくお願いします。
回答: スクレイピングは、自身の管理下に無いデータを取り扱う物なので対象ページの状態によって想定したデータが取得できない、あるいは不正なタグ構造などでおかしなデータが取得される事がありえることを考慮してプログラムを作る必要があります。 ひとまず本コードにおいてデータベースに空のタイトルが保存されるのが問題なのであれば、保存する前にタイトルが空の時は処理を行わないようにすればよいかと思います。 ``` // タイトル取得 $title = pq($entry2)->find('.title:eq(0)')->text(); if(empty(title)){ continue; } ```