PHP提示 “E_NOTICE : Undefined offset: 0” 错误的解决办法

2022-09-08 15:57:21 浏览数 (1)

最近太忙了,以至于忽略了我的写作哈哈,开个玩笑,给客户开发一个热搜采集插件,知道我忙所以打算让我用现有的微博采集插件改改,想着节省时间行吧,于是乎我开启插件之后提示“E_NOTICE : Undefined offset: 0 (set_error_handler) (1.7.2.3050 (Tenet)) ”,我就说没那么简单吧,看了下错误文件,代码采集的是新浪热搜,经过查询是数组未定义或者不存在。如图提示:

解决方法

知道问题所在了就修改代码吧,给函数增加一个判断,没有获取到则不执行,所以修改之后如图:

参考代码:

代码语言:javascript复制
//$str = urldecode($matches[1][$x]);//注释
if (isset($matches[1][$x])) {
    $str = urldecode($matches[1][$x]);
}else{
    $str = '未定义函数';
}

然后刷新,是的这回真的不报错了,显示“未定义函数”,对啊,因为没有取到值,为什么呢?因为新浪微博添加了一个所谓的“Sina Visitor System(新浪访客系统)”,一直以来,爬虫与反爬虫技术都时刻进行着博弈,而新浪微博作为一个数据大户更是在反爬虫上不遗余力,应该是今年的早些时候,新浪引入了一个新浪访客系统,也不知道是为了提高用户体验还是为了反爬虫,或许是兼而有之。实际结果就是,爬虫取回来的页面全部变成Sina Visitor System了,所以我们的采集就没有得到数据。

所以换句话说不一定是代码出现了问题,也有可能是爬虫没获取数据导致的,所以为了验证这个问题,我重新尝试了采集百度新闻,但貌似还是失败了,哈哈哈,我的问题哈,有其他问题留言反馈吧!

0 人点赞