本人不才写了一个 WordPress 得采集插件 wp-jpost,这边遇到一些问题烦请大佬指点。
我们抓取得内容现在是通过浏览器的跳转实现的,这样的话好处就是不会导致内存溢出之类的问题。缺点就是速度慢依赖浏览器,所以我们这里想弄一个脚本。如果直接写 php 脚本采集内容一多会内存溢出所以这里不考虑。所以看看能否在 curl 中跟随链接来循环访问页面来实现。
每个采集的 html 中使用了 meta 进行了跳转,如:
<meta content="8; url='http://127.0.0.1/jpost/?jtask=webhtm&jpage=22'" http-equiv="refresh">然后这边需要很多次循环,这边我们如何使用 shell 或者 curl 如何才能循环跟随这个地址去访问页面呢。
如果我们使用 php 再显示 html 中使用 header302,然后 header("Location:网址"); 这样可以使用 curl -L。,但是这样的话可能会导致页面内容无法执行,而直接跳转。
求大佬指点一下。
1
l12ab 2018-11-06 23:30:12 +08:00
前两天我正好也有这个需求,供参考。
``` <?php echo "run"; exit(1); //用 exit 返回状态 ?> ``` windows ``` @echo off cls :start php index.php if %errorlevel%==1 goto exceptionEnd goto start :exceptionEnd echo 结束 pause ``` linux ``` while [ 1 -eq 1 ] do php abc.php set last_code=$? if [ $last_code -ne 1 ];then echo "task error error_code: "$last_code break fi done ``` |
2
0ZXYDDu796nVCFxq 2018-11-06 23:31:21 +08:00 via Android
虽然表达清楚了,但看起来真的很累。
我们抓取得内容现在是通过浏览器的跳转实现的,这样的话好处就是不会导致内存溢出之类的问题。 这里有因果关系吗? 如果直接写 php 脚本采集内容一多会内存溢出所以这里不考虑。 这是代码有问题啊。 为何要用 shell 这么弱的语言做这种事? 我觉得,你用 PHP 处理不了,改用 shell 明显更难。 不如看下怎么解决 PHP 的内存问题。 |
4
NjcyNzMzNDQ3 2018-11-07 10:20:40 +08:00
内存溢出?
|
5
NjcyNzMzNDQ3 2018-11-07 10:21:40 +08:00
是不是没 curl_close 啊
|
6
qsbaq OP @NjcyNzMzNDQ3 用的是 snoopy,所有的参数变量我都有 unset,destory
|
7
NjcyNzMzNDQ3 2018-11-07 10:54:40 +08:00
@qsbaq 几年前的东西了,推荐 gayhub 上找个 xpath 的轮子吧
|
8
qsbaq OP @NjcyNzMzNDQ3 还望大佬详细说明
|
9
0ZXYDDu796nVCFxq 2018-11-07 11:01:05 +08:00 via Android
|
10
NjcyNzMzNDQ3 2018-11-07 11:14:24 +08:00
@gstqc 跑题了,你是想解决内存溢出。
xpath 就一工具,抓数据比正则舒服,所以推荐你以后可以试试。 |