2020-12-31 11:43:21 阅读(188)
随着物质的改善,旅游业逐渐成为人们关注的焦点。炎热的国庆节刚刚过去。利用这种余热,我想很多人都想知道你通常去哪里玩,所以我花了10分钟写了一个小程序来收集黄蜂巢游记。当然,速度可以如此之快,这完全取决于著名的PHP爬虫框架phpspider。在国际惯例中,让我们看看如何编写代码。它被认为是抛砖引玉。^_^黄蜂巢不同于传统网站。由于并发量高,一些数据需要实时,如观众数量和拇指数量,Ajax在许多地方使用,Ajax对普通收藏家来说是一个大问题。观察了黄蜂巢网站,最终确定了收集路线:获得热门城市->在城市下获取游记列表->获取游记内容->提取游记标题、城市、出发时间等。,然后我们用三个步骤来实现它。。。1、获取热门城市:首先,我们应该收集这些热门城市。当我们点击页数时,我们发现他的数据是由Ajax加载的,最后一页是297,POST方法提交的参数如下:显然,这个page是页数。这里有一个问题。phpspider框架有URL重机制,POST只有一个URL,但query_string不影响POST数据。我们可以在后面添加page=1 |2|3.所以我们的代码可以这样写:设置列表页面规则:'list_url_regexes'=>array("http://www.mafengwo.cn/mdd/base/list/pagedata_citylistpage=d ",)入口回调函数入口所有城市列表:$spider->on_scan_page=function($page,$content,$phpspider)上面Ajax分页的末页是297页for($i=0;$i<=297;$i ){///全国热点城市$url="http://www.mafengwo.cn/mdd/base/list/pagedata_citylistpage={$i}";$options=array('url_type'=>$url,'method'=>'post','fields'=>array('mddid'=>21536,'page'=>$i,));////热点城市列表页URL入队列$phpspider->add_url($url,$options);}};2、获取热门城市下的游记列表。点击进入一个城市后,我们可以看到他下面的游记列表和上面一样,也是Ajax加载的。我们可以打开chrome的开发者工具,点击Network,然后点击分页获取Ajax的URL:和城市列表一样,它也是POST,参数如下:显然page是页数,当然,我们直接通过POST访问ajax地址:http://www.mafengwo.cn/gonglve/ajax.phpact=get_t..直接报错,他需要来路,综合以上,我们的代码可以这样写:首先,我们应该在on_start回调函数中添加来路URL$spider->on_start=function($phpspider){$phpspider->add_header('Referer','http://www.mafengwo.cn/mdd/citylist/21536.html');};和上面获得的城市列表一样,设置列表匹配规则:'list_url_regexes'=>array("http://www.mafengwo.cn/gonglve/ajax.phpact=get_travellist&mddid=d ",)然后在on___list_page回调判断,如果是第一页,将获得总页数,然后循环到队列中:preg_match('#共(.*)页#',$data_page,$out);for($i=0;$i<$out[1];$i ){$v=$page['request']['fields']['mddid'];$url="http://www.mafengwo.cn/gonglve/ajax.phpact=get_travellist&mddid={$v}&page={$i}";$options=array('url_type'=>$url,'method'=>'post','fields'=>array('mddid'=>$v,'pageid'=>'mdd_index','sort'=>1,'cost'=>0,'days'=>0,'month'=>0,'tagid'=>0,'page'=>$i,));/////游记列表页URL进入队列$phpspider->add_url($url,$options);}通过以上两个步骤,我们将所有热门城市下的游记列表放在队列中。接下来,我们将进行第三步,从这些列表中获取内容页面URL,然后提取内容。3、在on_获取热门城市下的游记列表list_page方法将获得列表页面的内容。从这些内容中,我们可以提取内容页面的URL///获取内容页面preg_match_all('##',$html,$out);if(!empty($out[1])){foreach($out[1]as$v){$url="http://www.mafengwo.cn/i/{$v}.html";////内容页URL进入队列$phpspider->add_url($url);}}接下来,我们将配置field提取内容页面字段'fields'=>array(//标题array('name'=>"name",'selector'=>"//h1[contains(@class,'headtext')]",'required'=>true,),/分类array('name'=>"city",'selector'=>"//div[contains(@class,'relation_mdd')]//a",'required'=>true,),///出发时间aray('name'=>"date",'selector'=>"//li[contains(@class,'time')]",'required'=>true,),)设计数据表:当然,我们也可以获得浏览量、收集、共享、顶部、游戏金额等,太多,方法相似。这个程序已经设计好了,总共不到200行代码。由于phpspider具有多进程采集功能,数据很快收集完成,总共超过7W。这个程序已经设计好了,总共不到200行代码。由于phpspider具有多进程采集功能,数据很快收集完成,总共超过7W。我们得到这些数据后能做什么?!从Top10旅游城市可以看出,云南是博主日夜思念的好地方。。。从五一节和国庆节期间旅游城市的比例可以看出,人们喜欢在五一节去西藏,但国庆节更喜欢青岛。嗯,这两个地方的博主都没去过,说他们受伤了~_~!接下来,让我们来看看今年北京和杭州的旅游旺季。我们可以看到,7月和8月会有更多的人去北京。此时,北京是最酷的。它既不热也不冷。博主曾在一年八月去过北京。他很舒服。让我们来看看杭州。我们可以看到,3月底到4月中旬是杭州的合适季节。当时,春天盛开,天气也很好。我听说太子湾公园每年都有樱花和郁金花展,非常漂亮,艾玛旅游病又犯了~_~!嗯,这篇文章到此结束。事实上,我想分析更多,比如收集热门路线、热门景点、热门图集和旅游路线的价格。最后,形成一个旅游应用程序。如果你有好主意,你也可以告诉我,我会收集他供你参考。最后,对源代码感兴趣的学生可以在github上搜索phpspider^
以上就是关于用PHP蜘蛛做旅游数据分析的相关介绍,更多用PHP蜘蛛做旅游数据分析相关内容可以咨询我们或者浏览页面上的推荐内容。我们将让你对用PHP蜘蛛做旅游数据分析有更深的了解和认识。
推荐阅读
最新文章
猜你喜欢以下内容:
一 客户顾问-张三 一