前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >php采集互联网公开代理ip

php采集互联网公开代理ip

原创
作者头像
MoLeft
发布2022-06-17 08:44:13
4380
发布2022-06-17 08:44:13
举报
文章被收录于专栏:用砖头敲代码用砖头敲代码

首先我们去度娘搜索一下代理ip的网站,找一个代理ip多还免费的网站,然后我选的是快代理(不是广告)

image.png
image.png

然后<kbd>Ctrl+U</kbd>分析网页源代码,然后发现我们需要获取的数据在<tbody></tbody>之间,然后我们先利用正则表达式把<tbody></tbody>之间的内容都过滤出来。

代码语言:php
复制
<?php
$a = get_curl("https://www.kuaidaili.com/free/inha/1/");
preg_match_all("/<tbody>(.*)<\\/tbody>/si",$a,$b);
$array = $b[0][0];

就这样$array这个的内容就是这个页面<tbody></tbody>之间的内容了,接着我们需要把字符串替换一下,替换成我们需要的形式

代码语言:php
复制
//需替换的字符串
$text = ['<tbody>','</tbody>','<tr>','</td>',' ',"\n"];
//替换成的字符串
$replace = ['','','','+','',''];
$array = array_filter(explode('</tr>',str_replace($text,$replace,$array)));

就这样$array大变身,成了方便我们进行下一步操作的形式,我们可以利用explode()函数来将它分割成了数组,所以说下面我们可以加一个for循环来生成代理ip的数组

代码语言:php
复制
for($i=0;$i<count($array);$i++){
  //需要替换一下剩下的内容
  $arr1 = ['<tddata-title="IP">','<tddata-title="PORT">','<tddata-title="匿名度">','<tddata-title="类型">','<tddata-title="位置">','<tddata-title="响应速度">','<tddata-title="最后验证时间">'];
  $arr2 = ['','','','','','',''];
  //再再再次分割数组
  $info = array_filter(explode('+',str_replace($arr1,$arr2,$array[$i])));
  //生成代理ip列表
  $proxy[] = ['ip'=>$info[0],'port'=>$info[1],'anonymous'=>$info[2],'type'=>$info[3],'location'=>$info[4]];
}

就这样我们已经完成了所有的步骤,$proxy就是整个代理ip的列表,我们只采集了第一页,需要其他页码可以改一下页码,但是我还是比较喜欢json,所以说还是把它当做json输出吧。

代码语言:php
复制
exit(json_encode($proxy));

查看效果

本次测试一下,看看输出的json是什么样的

代码语言:json
复制
// 20200405201929
// http://127.0.0.1/

[
  {
    "ip": "171.11.178.164",
    "port": "9999",
    "anonymous": "高匿名",
    "type": "HTTP",
    "location": "河南省济源市电信"
  },
  {
    "ip": "175.42.123.178",
    "port": "9999",
    "anonymous": "高匿名",
    "type": "HTTP",
    "location": "福建省宁德市联通"
  },
  {
    "ip": "163.204.243.10",
    "port": "9999",
    "anonymous": "高匿名",
    "type": "HTTP",
    "location": "广东省汕尾市联通"
  },
  {
    "ip": "1.198.111.240",
    "port": "9999",
    "anonymous": "高匿名",
    "type": "HTTP",
    "location": "河南省鹤壁市电信"
  }
]

其实我本来想直接上传的服务器然后提供接口的,但是后来发现这里的代理ip根本用不了(也用可能是我不会用)所以说还是提供一个思路出来,方便你们改代码。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 查看效果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档