实现目标

1. 用户发布的微博内容;

2. 用户发布的时间;

3. 用户的名称; (这里我并没有获取)

使用的工具

1. voku/simple_html_dom x-path读取工具 (如果不知道怎么获取元素的xpath, 请百度这里不做赘述~)

安装: composer require voku/simple_html_dom

实现的原理

当你去直接用file_get_contents去抓取微博的网页内容时, 你会被它的访客系统直接拦截, 所以直接用这个方法是不行的;

所以我采用了curl来获取. 当然,直接获取也是不行的, 所以我们要设置一下请求头, 微博对爬虫类的请求头是不会拒绝的,

所以你可以直接抓取到网页;

请求头设置如下:

'User-Agent: spider'

代码如下:

// 通过这段代码你可以直接获取到微博的(HTML)网页

public function curlGetWbData()

{

// 设置脚本超时时间

set_time_limit(60);

// 拉取微博地址

$getWbUrl = "https://weibo.com/p/1005056447467552/home?profile_ftype=1&is_all=1#_0";

// 设置curl 请求头

$header = [

'User-Agent: spider'

];

$ch = curl_init(); // 初始化curl

curl_setopt($ch, CURLOPT_URL, $getWbUrl);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 禁止 cURL 验证对等证书

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

curl_setopt($ch, CURLOPT_HTTPHEADER, $header); // 设置请求头

$wbContent = curl_exec($ch);

curl_close($ch);

// 到这里我们就拿到了微博的网页

return $wbContent;

}

拿到微博的网页内容之后, 我们就要对立面的数据进行提取, 因为并不是所有的数据我们都需要;

这里我们提取 微博内容 微博发布的时间; 现在需要使用x-path来进行提取;

x-path示例:

div[class='WB_cardwrap WB_feed_type S_bg2 WB_feed_like ']

代码如下:

// 这个方法是

public static function actionAddWbData(string $wbContent, string $userID)

{

$htmlDeal = new HtmlDomParser(); // 处理DOM的对象

$htmlDeal->load($wbContent); // 装载文本

// 微博VIP和普通用户的class名不一致

$wbHtml['normal'] = $htmlDeal->find("div[class='WB_cardwrap WB_feed_type S_bg2 WB_feed_like ']");

$wbHtml['vip'] = $htmlDeal->find("div[class='WB_cardwrap WB_feed_type S_bg2 WB_feed_vipcover WB_feed_like ']");

$wbNum = [];

foreach ($wbHtml as $item => $key) {

if (count($key) <= 0) {

continue;

}

$wbNum[$userID][$item] = self::dealWbContent($key, $userID);

}

Yii::info("抓取微博日志记录" . '----' . json_encode($wbNum));

return $wbNum;

}

php抓取运动步数,使用PHP抓取微博数据相关推荐

  1. php抓取运动步数,微信运动数据抓取(PHP)

    "微信运动"能够向朋友分享一个包含有运动数据的网页,网页中就有我们需要的数据.url类似于: https://open.weixin.qq.com/connect/oauth2/a ...

  2. 抓取某话题下指定时间内的微博数据,包括博文数据、评论信息等(可通过高级搜索筛选时间)

    代码有点长,完整代码放在文章最后了. 最后的数据存储为了3个表,表的各字段如下: # csv头部 writer.writerow(('话题链接', '话题内容', '楼主ID', '楼主昵称', '楼 ...

  3. 利用新浪API实现数据的抓取\微博数据爬取\微博爬虫 1

    PS:(本人长期出售超大量微博数据.旅游网站评论数据,并提供各种指定数据爬取服务,Message to YuboonaZhang@Yahoo.com.由于微博接口更新后限制增大,这个代码已经不能用来爬 ...

  4. 面向6G网络自动化的知识驱动可解释人工智能(XAI);基于汽车事件数据的脉冲神经网络目标检测;对称分类方案下波导阵列中的BIC;PreMovNet:基于运动前脑电的抓取和提举手运动学估计

    可解释的机器学习 中文标题:面向6G网络自动化的知识驱动可解释人工智能(XAI) 英文标题:Knowledge-powered Explainable Artificial Intelligence ...

  5. php通过函数怎么禁止百度蜘蛛抓取,怎么屏蔽百度蜘蛛抓取网站?

    百度蜘蛛抓取我们的网站是希望将我们的网页收录到它的搜索引擎里,未来当用户搜索时,能为我们带来一定的SEO流量.当然我们并不是希望搜索引擎什么都抓取. 所以,这时我们只希望我们希望在搜索引擎被搜索到的内 ...

  6. 华为抓取错误日志在哪里_抓取网址进行分析爬虫工具Screaming Frog SEO Spider for Mac...

    Screaming Frog SEO Spider for Mac是一款专门用于抓取网址进行分析的网络爬虫开发工具,你可以通过这款软件来快速抓取网站中可能出现的损坏链接和服务器错误,或是识别网站中临时 ...

  7. python自动抓取论文_用python抓取某期刊最近5年发表的所有文章的关键词和摘要...

    在学术研究中,经常需要了解某个领域的最新发展趋势,比如说,发掘最热门.上升速度最快的几个关键词.有些学术服务网站,比如Web of Science,提供类似的服务,但一些院校并没有订购这些服务,而且使 ...

  8. 爬虫抓取某饿了app商铺的评论数据

    前言: 最近研究了一下某饿了app的商铺评论的抓取,该app使用了ssl-pinning的技术来防止中间人攻击,中间代理抓包的时候,出现了unknown,你的代理工具的协议不支持,你可以手写协议或者使 ...

  9. 利用新浪API实现数据的抓取\微博数据爬取\微博爬虫

    PS:(本人长期出售超大量微博数据.旅游网站评论数据,并提供各种指定数据爬取服务,Message to YuboonaZhang@Yahoo.com.由于微博接口更新后限制增大,这个代码已经不能用来爬 ...

最新文章

  1. python数据结构与算法:排序算法(面试经验总结)
  2. python时钟程序的设计总结_Python实现时钟显示效果思路详解
  3. url指定服务器,Linux服务器设置定时任务来访问指定url
  4. 量子计算机个人化时间,科学家发现量子算法可以停止时间
  5. winsock setsockopt 详解
  6. 【Paper】2018_多无人机协同编队控制算法研究_林倩玉
  7. MySQL-索引优化篇(4)_索引的维护
  8. 在线应用的 Serverless 实践
  9. 2021牛客多校6 - Hopping Rabbit(矩形取模+扫描线)
  10. 大改革,GNOME 3.x将直接跳到GNOME 40
  11. PHP初学者头疼问题总结
  12. 转:机器人工程师学习计划(YY硕)(后悔自己没有早点看到强力推荐)
  13. css里面li标签怎么加图片_css怎么设置li标签的样式?
  14. 如何使用 Windows 10 自带的磁盘清理程序?
  15. js更换自定义鼠标指针图片
  16. RTKLIB专题学习(十二)—支持的信号ID/观测类型及读取优先级
  17. 卡方检验在关联分析中的应用
  18. 孙武不夜城出新“招” 各路豪杰来热闹
  19. 狠狠报复了出轨的丈夫和他的情人——转载
  20. Python基础-19-魔法方法(常用)

热门文章

  1. IntelliJ IDEA使用教程(非常全面)
  2. 将String转换成Int数组-Java
  3. 【已解答】Linux ./configure --prefix 命令是什么意思?
  4. Markdown公式输入(very nice!!!)
  5. golang 数组 最后一个_面试必问:Golang高阶Golang协程实现原理
  6. 进程有一个全局变量 i,还有有两个线程。i++ 在两个线程里边分别执行 100 次,能得到的最大值和最小值分别是多少?
  7. VS2010上使用Qt 5.2.1出现 “There's no Qt version assigned to this project for platform Win32”错误的解决办法
  8. 往map里的vector添加_往鱼缸里添加硝化细菌,这些事项我们还是要注意的!
  9. js 实现2的n次方计算函数_「计算机组成原理」:一文快速了解计算机原理知识点-附思维导图...
  10. junit 引入spring 注解管理_第05章 Spring 整合 Junit