捣鼓了一个函数,可以从某网站自动获取想要的情报。
跟WordPress关系不太大,主要就是在php里写了一堆我不擅长的正则。
例子里取的内容是电影的。音乐和读书的类似,自己追加正则就是了。没有的项目也自己增加正则就好了。抓取不是目的,目的是提供一个思路。
注意:本文写于2020年9月11日,正则表达式配合的是当天的某网站的格式,不保证以后也可以用!
function wp_fetch_from_douban($url) { $response = @wp_remote_get( htmlspecialchars_decode($url), array( 'timeout' => 1000, ) ); if ( is_wp_error( $response ) || !is_array($response) ) { return array(); } preg_match_all('/(<div id="mainpic"[\s\S]+?<\/div>)|(<div id="info"[\s\S]+?<\/div>)|(<strong .+? property="v:average">.+?(<\/strong>|>))/',wp_remote_retrieve_body($response),$matches); if (is_array($matches) && is_array($matches[0]) && count($matches[0])>=3) { $mainpic_div_str = $matches[0][0]; $info_div_str = $matches[0][1]; $score_str = $matches[0][2]; //图 preg_match('/(?<=img src=").*?(?=")/',$mainpic_div_str,$match_imgs); if (is_array($match_imgs)) { $ret['pic'] = $match_imgs[0]; } //分 preg_match('/(?<= property="v:average"\>).*?(?=\<)/',$score_str, $match_score); if (is_array($match_score)) { $ret['average_score'] = $match_score[0]; } $info_grep_keys = array( array('pattern'=>'/(?<="v:directedBy"\>).*?(?=\<)/', 'item'=>'director(s)'), array('pattern'=>'/(?<="v:starring"\>).*?(?=\<)/', 'item'=>'actor(s)'), array('pattern'=>'/(?<="v:genre"\>).*?(?=\<)/', 'item'=>'genre(s)'), array('pattern'=>'/(?<=\<span property="v:initialReleaseDate" content=").*?(?=")/', 'item'=>'release_date(s)'), ); foreach ($info_grep_keys as $grep) { unset($matches); preg_match_all( $grep['pattern'], $info_div_str, $matches); if (is_array($matches) && is_array($matches[0]) && count($matches[0])>=1) { if(count($matches[0])>1) { $ret[$grep['item']] = implode(',', $matches[0]); } else { $ret[$grep['item']] = $matches[0][0]; } } } } //var_dump($ret) ; return $ret; }
代码才是时代王者!
会代码真好
同感啊,看不懂又超级敬佩
豆瓣牧风有个第三方借口,查书,电影挺好用的。
https://bm.weajs.com/
去看了一下,不适合我用啊。因为我把自己的豆瓣ID注销了。
看了半天,只能先收藏了。
代码如诗,看来大致哥最近性质不错
相当于就是舆情监控的功能吧。
并不是。
php网络爬虫哈哈
对。因为我不是干网络开发的,所以这块就是瞎搞。昨天循环调用,发现IP被当不良爬虫给封掉了= =