>백엔드 개발 >PHP 튜토리얼 >Sohu Video에 있는 모든 사용자의 앨범 이름을 캡처하세요

Sohu Video에 있는 모든 사용자의 앨범 이름을 캡처하세요

WBOY
WBOY원래의
2016-07-25 08:47:031082검색
抓取搜狐视频中所有用户的专辑名。如果记录全部获取过来以后,可以方便的检索出相关关键词的视频专辑。但是由于用户数目太多,一个线程跑的话不知道要跑多少年。可以通过设置多表、ID分段来实现多通道的同时抓取。

可通过修改$user_id的开始和结束,来分段同时多通道。

sleep(1)仅为个人测试,可以修改
  1. header("Content-Type:text/html; Charset=UTF-8");
  2. set_time_limit(0);
  3. $col_title = ''; //标题
  4. $col_url = ''; //URL编号
  5. $user_id = 26; //起始抓取用户编号
  6. //MySQL预操作
  7. $mysqli = new mysqli("p:localhost", 'root', '', 'sohutv');
  8. if ($mysqli->connect_errno) {
  9. printf("Connect failed: %sn", $mysqli->connect_error);
  10. exit();
  11. }
  12. $mysqli->set_charset("utf8");
  13. $sql = "INSERT INTO album (userid,title,url) VALUES(?,?,?)";
  14. $stmt = $mysqli->prepare($sql);
  15. $stmt->bind_param("sss",$user_id ,$col_title ,$col_url);
  16. //循环抓取
  17. while (true) {
  18. $url = "http://my.tv.sohu.com/user/a/playlist/ta/list.do?userId=".$user_id;
  19. $temp_html = file_get_contents($url);
  20. $temp_json = json_decode($temp_html);
  21. $column_no = $temp_json->{'data'}->{'count'};
  22. if ($column_no) {
  23. //var_dump($temp_json->{'data'});
  24. $temp_array = $temp_json->{'data'}->{'list'};
  25. for($i=0; $i<$column_no; $i )
  26. {
  27. $temp_obj = $temp_array[$i];
  28. //var_dump($temp_obj);
  29. $col_title = $temp_obj->{'title'};
  30. $col_url = substr($temp_obj->{'url'}, 25, -6);
  31. $stmt->execute();
  32. }
  33. }
  34. //休眠1秒
  35. sleep(1);
  36. $user_id ;
  37. }
  38. /*
  39. 访问方式
  40. http://my.tv.sohu.com/pl/URL编号.shtml
  41. */
  42. ?>
复制代码


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.