批量获取/打开链接 - 实践

1.应用场景

批量操作, 打开链接.

2.学习/操作

思路

获取超链接标签, 然后使用批量打开每个超链接, 从而不需要手动一个个打开链接

完善

建议用脚本实现, 然后写一个定时脚本[服务器上],每天定时执行.

环境

Chrome浏览器/其他浏览器也可以

PHP 7.3

nginx 1.15/1.16

方式一

2.1 使用 LmCjl在线工具 在线工具,抓取网页超链接[需要清洗数据,即不需要的数据去除掉即可]  --- 现在改为需要注册登录  -- 20210226 周五 家里

网站链接抓取_在线批量获取网页链接工具_链接抓取  //提取超链接在线工具

... 

2.2 使用在线工具批量打开超链接

2.2.1 输入 批量打开网址、网页、网站(网址、超链接批量打开工具,如何批量一键快速打开多个网站、网页) 回车

2.2.2 注意

 首次操作,点击批量打开按钮后,浏览器会在上端网址栏www.ab173.com最右端有小图标(隐蔽图标)提示拦截本站弹窗,请点击选择为允许本站所有弹窗。(不允许弹窗就是屏蔽批量打开的功能,请放心选择)若已经选择允许弹窗,并测试可以批量打开网址,请忽略以下操作。

详细信息见 批量打开网址、网页、网站(网址、超链接批量打开工具,如何批量一键快速打开多个网站、网页) 常见问题

chrome://settings/content/popups   //隐私设置和安全性 - 弹出式窗口和重定向

截图如下:

2.2.3 点击'批量打开',结果如下:

由上可知, 已经成功.

备注:

根绝个人电脑配置以及浏览器种类而定同时打开的超链接数.

这里:[作为参考]

同时开启200个tab, 是okay的.

cpu会瞬间升高, 但是稍后会降下来, 内存也会升高, 不会降下来. 

//另外我这里仅仅是想执行请求, 并不是要得到响应结果,所以页面发出请求就可以关闭了.

方式二:使用爬虫获取超链接,后用循环执行打开超链接  //均使用脚本语言来处理, 即完全自己写代码来处理

php/python均可.

PHP实现

<?php

//1.数据文件[这里不是大文件]
$dataFile = dirname(__FILE__) . '/urls.txt';

//2.读取文件内容
$dataStr = file_get_contents($dataFile);

//3.清洗数据
$dataStr = preg_replace('/([\d]+-[\d]+\s)|(\r\n)/', ' ', $dataStr);
$dataArr = explode(' ', $dataStr);

//3.1 随机选取部分数据, 也可以做测试
shuffle($dataArr); //打乱
$dataArr = array_slice($dataArr, 0, 147);

//4.统计时间
$timeSum = 0;
$num = 0;
$dataTime = date('Y-m-d H:i:s', time());

//5.curl请求[循环,也可以同时发请求
$ch = curl_init();
foreach($dataArr as $url){
    if(!$url){
        continue;
    }
    curl_setopt($ch, CURLOPT_URL, trim($url));
    curl_setopt($ch, CURLOPT_HEADER, TRUE);
    curl_setopt($ch, CURLOPT_NOBODY, TRUE); // remove body[即不输出body,Will be fasters]
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_exec($ch);
    if(!curl_errno($ch)){
      $info = curl_getinfo($ch);
      $timeSum += $info['total_time'];
      $num++;
      //echo 'Took ' . $info['total_time'] . ' seconds to send a request to ' . $info['url'] . "\n\r";
    } else {
      echo 'Curl error: ' . curl_error($ch) .  " with $url \n\r";
    }
}
// $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// echo $httpCode;

echo $dataTime . ' Total took ' . $timeSum . ' seconds to send requests of ' . $num . ' urls' . "\n\r";

curl_close($ch);

邮件通知

// 提供个思路

暂时参见: Laravel 邮件_william_n的博客-CSDN博客_laravel 邮箱

实践TBD

定时脚本  // 用shell/Perl编写

shell脚本

Linux Crontab 定时任务 - 学习/实践_william_n的博客-CSDN博客  //Linux Crontab 定时任务

request_urls.sh

#!/bin/sh
cd ~/ningxiaofa/request_urls
php -q ./request_urls.php  >> ./request_urls.txt
fileSize=`ls -l  ./request_urls.txt | awk '{print $5}'`
if [ ${fileSize} -gt 51200 ]
then
     rm -rf  ./request_urls.txt
     touch ./request_urls.txts
fi

定时任务: //每31分钟执行一次

 */31 * * * * ~/crontab/request_urls.sh >> ~/ningxiaofa/request_urls.txt

修改后[将重定向输出写到shell脚本中]:

*/31 * * * * ~/crontab/request_urls.sh

最终结果:

定时脚本结果:

正常执行.

Note

这里因为会将echo 输出的内容重定向输出到request_urls.txt文本中, 可能时间长了之后, 文件较大,

建议在shell脚本中, 添加代码判断, 如果文件大小超过xxMB, 便删除该文件.然后重建文该文件[应不用TBD].

...

3.问题/补充

1.使用JavaScript能否正常实现功能? // 20201014 科学馆

TBD

4.参考

php curl批量打开网址(curl_multi类)的实现代码 -php教程-PHP中文网  //php curl批量打开网址(curl_multi类)的实现代码

在线工具大全 - 推荐_william_n的博客-CSDN博客_在线工具大全 //工具

网站链接抓取_在线批量获取网页链接工具_链接抓取  //提取超链接-在线工具
批量打开网址、网页、网站(网址、超链接批量打开工具,如何批量一键快速打开多个网站、网页)  //批量打开超链接-在线工具

Shell 编程 - 学习/实践_william_n的博客-CSDN博客 //Shell 编程

Shell脚本编写 - 学习/实践_william_n的博客-CSDN博客_shell脚本开发学习  //shell脚本编写思路

后续补充

...

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值