【現在の状況】
PHPの勉強を開始して数ヶ月のものです。
現在、ドットインストールと書籍で基礎的な知識と簡単なプログラムの作成が終わりました。
そこで
以前こちらにて教えて頂いた通り
自作で作りたいものを作りながらPHPの勉強をしようと思い「スクレイピング」を使ったサイトを作成中です。
【現在の進捗状況】
PHP+PHPQUERYを使用:
「記事のタイトル」「記事のURL」「投稿日時」「画像・動画の枚数」の取得が完了
上記で取得した情報をmysqlに登録
bootstrapを利用して作成したテーブルにmysqlのデータを表示
ここまでなんとか作る事が出来ました。
【問題が発生している点】
次に記事の「引用元」を取得し、取得した「URL」によって「引用元の名前」を取得したいと考えています。
foreach文の中で取得したURLが「引用元」なのか「画像や動画のurl」なのかの判断と
もしも「引用元」だった場合に「引用元の企業名」を変数に入れて
mysqlにて保存していきたいと思っています。
初心者なりにネットで検索したり色々と頭を悩ませた結果、
switch文の条件分岐で書いていけばいいのでは?と考え
switchと正規表現で作ってみました。
PHP
1// 引用元のURLを取得(本文中の「a」タグを含めたURLのテキストを取得しています。):phpquery使用 2$inyoumoto = pq($entry)->find('dd > a')->text(); 3 4switch(true) { 5case preg_match('/this.kiji.is/', $inyoumoto): 6 $inyoumoto2 = "共同通信"; 7 break; 8case preg_match('/news.livedoor/', $inyoumoto): 9 $inyoumoto2 = "livedoorニュース"; 10 break; 11case preg_match('/afpbb/', $inyoumoto): 12 $inyoumoto2 = "AFPBBニュース"; 13 break; 14case preg_match('/3.nhk.or.jp/', $inyoumoto): 15 $inyoumoto2 = "NHKニュースWEB"; 16 break; 17case preg_match('/news24.jp/', $inyoumoto): 18 $inyoumoto2 = "日テレNEWS24"; 19 break; 20case preg_match('/j-cast.com/', $inyoumoto): 21 $inyoumoto2 = "JCASTニュース"; 22 break; 23case preg_match('/mess-y.com/', $inyoumoto): 24 $inyoumoto2 = "メッシー"; 25 break; 26case preg_match('/reuters.com/', $inyoumoto): 27 $inyoumoto2 = "ロイター"; 28 break; 29case preg_match('/news.tv-asahi.co.jp/', $inyoumoto): 30 $inyoumoto2 = "テレビ朝日"; 31 break; 32case preg_match('/dot.asahi.com/', $inyoumoto): 33 $inyoumoto2 = "AERAdot."; 34 break; 35case preg_match('/www.sankei.com/', $inyoumoto): 36 $inyoumoto2 = "産経新聞"; 37 break; 38case preg_match('/headlines.yahoo.co.jp/', $inyoumoto): 39 $inyoumoto2 = "yahooニュース"; 40 break; 41case preg_match('/www.fnn-news.com/', $inyoumoto): 42 $inyoumoto2 = "FNNニュース"; 43 break; 44default: 45 $inyoumoto2 = "未登録の引用元です。"; 46 break; 47} 48
このコードを利用した所
「8割」ぐらいは条件通りに動いてくれたのですが
たまに
「未登録の引用元」なのに「共同通信」や「産経新聞」と表示されたり
「登録されている引用元」なのに「別の引用元」の名前が表示されたりといった事も発生しています。
(普段は「未登録の引用元」だと正常に表示されるのですが、たまに「別の引用元の企業名」が表示されます。)
なんとか解決出来ないかと2日間ぐらい頭を沸騰させながら悩み続けたのですが上手くいきません。
勉強中の初心者が作ったコードなので
どこかが間違っているのだとは思うですが中々見つける事が出来ません。
どこか変な場所等がありましたら教えて頂けると嬉しいです。
【悩んでいる時に特に参考にしたサイト】
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/18 22:53
2017/07/18 23:44