其实,我这只算是投机取巧。
技术是死的,人是活的,如果只在一棵树上吊死,岂不是浪费了整片森林。
网上类似教程更多的是教你一条路走到黑。
“哎呀,这个抓不到数据呀,我查了好像得要模拟登录。”
“嗯,你说的没错,正好我这儿有一篇教程是教怎么模拟登录的,你好好看看,学习一下。”
这可以解决问题,但路不止一条。
================================
只说工具,大体方法,就不截图了。
工具:
user agent switcher 之类的插件,一搜一大把。
F12,开发者组件,查看网络请求。
方法概述:
先打开要抓取的个人页面,切换user agent 为移动设备,刷新。都不用自己操心,新浪就自动给你跳到手机页面了。(当然你可以直接在手机上操作,就不用这个插件了)
你可以先登录,为的是方便的到达最终页面。(不登录也是可以的,那个地址就罢在那儿,就看你能不能发现了)
进入他的页面以后,下面有个“查看更多微博”,打开以后这就是我们最终操作的地方了。(类似这样的链接:http://m.weibo.cn/page/tpl?containerid=1005052447680824_-_WEIBO_SECOND_PROFILE_WEIBO&itemid=&title=%E5%85%A8%E9%83%A8%E5%BE%AE%E5%8D%9A)
这个地址是不用登录就能打开的……
所以,应该就到这了。
不过你会发现页面滚动到最下面的时候会有个动态加载,所以我猜可以直接查到它的json地址,那样,得到的东西更纯粹。动用 F12 ,观察网络请求,可以发现它动态加载的是这个地址 http://m.weibo.cn/page/json?containerid=1005052447680824_-_WEIBO_SECOND_PROFILE_WEIBO&page=2 。
所以首页的数据一定可以从这儿来:http://m.weibo.cn/page/json?containerid=1005052447680824_-_WEIBO_SECOND_PROFILE_WEIBO ,这可是白花花的json数据呀,随你怎么处置。
想得到其他人的微博,到最后只是改一下那个id。
(这里有个巧合就是把网页地址tpl改成json就可以直接得到json地址 )
1 2 3 4 5 6 7 8 |
<?php include "gethtml.php"; $html=gethtml('http://m.weibo.cn/page/json?containerid=1005052447680824_-_WEIBO_SECOND_PROFILE_WEIBO'); $js=json_decode($html,true); for($i=0;$i<10;$i++){ echo '<div class="block">'.$js["cards"][0]["card_group"][$i]["mblog"]["text"].'</div>'; } ?> |
只解析了文字,其它图片视频什么的,自己想办法…哈哈。
謝謝這麼快出教程了,先謝完慢慢學習
其實我需要抓取的不是微博個人頁面內容,而是一些內容聚合網站上的微博文章。例如現在我有一個鏈接http://weibo.com/ttarticle/p/show?id=2309404002489425894741 , 使用android user agent也抓取不到實際的文章內容,頁面好像是動態獲得內容的,這個不會弄啊,可以幫忙看看嗎?先謝謝了。
这个就是我说过的我这里抓取的三种情况之一:json写入。
我说的稍麻烦是指json地址获取。只传张图吧,这个还要自己分析。
打开浏览器,F12键,一般的都会有这么个工具,chrome和firefox的大同小异。抓到json地址以后,请参考上面的代码输出。
不好意思,最近一直忙。謝謝博主的教程了,之前一直忽略了這個,試完後果然好用,感激不盡。
哈哈 刚刚发现这个网站~
我是小白,学习了!谢谢楼主分享经验~
话说回来,我追踪微博一直是用即刻app的实验室功能…
非常不错的网站!站主能否帮忙抓取一下这个微博的rss:https://weibo.com/labome?refer_flag=1001030101_&is_all=1
谢谢!
微博正打算做一个大家都可以用的,所以要花些时间。