把以前博客的东西夜迁移过来吧,这个是以前公司做的,原来放在csdn里面,先切过来。

用多进程实现的 wget多进程抓取的实现,有问题联系我 (微博:偶是周亮)

#!/bin/bash
url_path="-";
WGET_TIMECOUNT=;
WGET_TIME=;
FORK_SLEEP_TIME=;
ONEURL_SLEEP_TIME=;
SPIDER_PID_NUM=;
function usage(){
echo "usage:spider.sh -u url_path -d page_store_dir";
exit ;
}
function version(){
echo "same-source-tools-spider-1.0.0";
exit ;
}
while getopts l:u:d:t:T:s:S:p: OPTION
do
case $OPTION
in
u)url_path=${OPTARG};;
d)spider_dir=${OPTARG};;
t)WGET_TIMECOUNT=${OPTARG};;
T)WGET_TIME=${OPTARG};;
s)FORK_SLEEP_TIME=${OPTARG};;
S)ONEURL_SLEEP_TIME=${OPTARG};;
p)SPIDER_PID_NUM=${OPTARG};;
l)LOG_PATH=${OPTARG};;
h)usage;;
v)version;;
/?)usage;;
esac
done
touch ${LOG_PATH};
#检查抓取文件是否存在
if [ -e ${url_path} ]; then
echo "spider test: ${url_path} is exist" ;
else
echo "url_path spider test: ${url_path} is not exist";
exit ;
fi
#检查存储网页的目录是否存在
if [ -e ${spider_dir} ]; then
echo "spider test: ${spider_dir} is exist" ;
else
echo "spider_dir spider test: ${spider_dir} is not exist";
exit ;
fi
#清除原来的url文件
url_first_path="${spider_dir}/url_0";
if [ -e ${url_first_path} ]; then
rm ${spider_dir}/url_*;
fi
#创建url多进程抓取文件
for ((i=;i<${SPIDER_PID_NUM};i++));do
{
touch ${spider_dir}/url_${i};
}
done
no=;
#向url多进程抓取文件中写入抓取的url
cat ${url_path} | while read line
do
echo $line >> ${spider_dir}/url_${no};
no=$(($no+));
if [ $no -ge ${SPIDER_PID_NUM} ]; then
no=;
fi;
done
#开始多进程抓取
for ((i=;i<${SPIDER_PID_NUM};i++));do
sleep ${FORK_SLEEP_TIME};
{
url_path="${spider_dir}/url_${i}";
if [ -e $url_path ]; then
cat ${url_path} | /
while read url
do
sleep ${ONEURL_SLEEP_TIME};
url_md5=`echo ${url} | md5sum | awk -F" " '{print $1}'`;
wget "${url}" -o ${LOG_PATH}_${url_md5} -O ${spider_dir}/${url_md5} -t ${WGET_TIMECOUNT} -T ${WGET_TIME};
#wget ${url} -o ${LOG_PATH}_${url_md5} -a ${LOG_PATH} -O ${spider_dir}/${url_md5} -t ${WGET_TIMECOUNT} -T ${WGET_TIME};
dateFlag=`date +"%Y%m%d-%H:%M:%S"`;
if [ $? -eq ]; then
echo "${dateFlag} NOTICE:spiderwgetsuccess ${url}" ;
else
echo "${dateFlag} ERROR:spiderwgeterror ${url}" ;
rm ${spider_dir}/${url_md5};
fi
done
else
continue;
fi
} &
done
wait

wget多进程抓取的实现的更多相关文章

  1. 使用wget工具抓取网页和图片 成功尝试

    使用wget工具抓取网页和图片 发表于1年前(2014-12-17 11:29)   阅读(2471) | 评论(14) 85人收藏此文章, 我要收藏 赞7 wget 网页抓取 图片抓取 目录[-] ...

  2. 使用wget工具抓取网页和图片 及 相关工具几个

    想保存一些网页,最后找到这 wget 的 shell脚本,虽然不是太理想,亲测可用呢. 使用wget工具抓取网页和图片   来源 https://my.oschina.net/freestyletim ...

  3. wget全站抓取命令

    wget -r -p -np -k http://www.freebuf.com/ 忽视,避开robots.txt,加一个-e robots=off 用wget避开robots.txt的下载限制 wg ...

  4. PHP多进程编程(3):多进程抓取网页的演示

    我们知道,从父进程到子经常的数据传递相对比较容易一些,但是从子进程传递到父进程就比较的困难. 有很多办法实现进程交互,在php中比较方便的是 管道通信.当然,还可以通过 socket_pair 进行通 ...

  5. Python多进程方式抓取基金网站内容的方法分析

    因为进程也不是越多越好,我们计划分3个进程执行.意思就是 :把总共要抓取的28页分成三部分. 怎么分呢? # 初始range r = range(1,29) # 步长 step = 10 myList ...

  6. Python爬虫【三】利用requests和正则抓取猫眼电影网上排名前100的电影

    #利用requests和正则抓取猫眼电影网上排名前100的电影 import requests from requests.exceptions import RequestException imp ...

  7. Python开源爬虫项目代码:抓取淘宝、京东、QQ、知网数据--转

    数据来源:数据挖掘入门与实战  公众号: datadw scrapy_jingdong[9]- 京东爬虫.基于scrapy的京东网站爬虫,保存格式为csv.[9]: https://github.co ...

  8. Python 3.6 抓取微博m站数据

    Python 3.6 抓取微博m站数据 2019.05.01 更新内容 containerid 可以通过 "107603" + user_id 组装得到,无需请求个人信息获取: 优 ...

  9. wget整站抓取、网站抓取功能;下载整个网站;下载网站到本地

    wget -r   -p -np -k -E  http://www.xxx.com 抓取整站 wget -l 1 -p -np -k       http://www.xxx.com 抓取第一级 - ...

随机推荐

  1. 给ecshop后台增加管理功能页面

    给ecshop后台增加管理功能页面 比如我们增加一个统计报表叫做 物流费用统计报表 放在后台“报表统计”栏目中 具体操作步骤: 第一步,我们要添加一个菜单到后台,然后设置语言项,最后设置权限,这样,后 ...

  2. C语言的本质(5)——类型转换的本质与处理

    数据类型转换的方式 C 语言中的数据类型转换可分为隐式转换和显式转换两种. 隐式转换 隐式转换也可称作为自动转换,它经常以以下几种形式发生: 1.在计算一个同时出现多种数据类型的表达式时,将所有数据类 ...

  3. SEO人员应该突破的5大思想误区

    1.外链误区 很多人在做网站优化的时候容易陷入外链怪圈,认为外链就是网站优化的一切,只要做好外链排名就会上去,让他不做外链了他将不知道做什么.特别是外链专员和一些初级SEO人员,优化网站只知道到哪里发 ...

  4. 初识Java--线程同步(2)

    本文讲述Java中的线程同步和生产者消费者问题,其中主要涉及线程同步和wait().notify()方法的用法. wait和notify方法只能用在线程同步中,wait和notify是object的方 ...

  5. network is unreachable 解决方案之一

    请按http://blog.csdn.net/oxiaoxio/article/details/41775183 一文中的设置方法设置:

  6. Zookeeper介绍

    Zookeeper是一个分布式的开源系统,目的是为分布式应用提供协调一致性服务. 分布式应用可以在Zookeeper提供的简单原语集之上构造更高层次的服务.比如统一命名服务.状态同步服务.集群管理.分 ...

  7. 关于cocos2dx 3.0升级崩溃报错(unable to load native library) 和(Fatal signal 11 (SIGSEGV) at 0x00000000)

    近期一直在Windows平台开发cocos-2dx游戏,期间做了一次引擎升级,升级到了3.0正式版本号.Windows平台上表现非常正常,没有出现什么问题. 上周五准备公布一个安卓包,编译非常轻松的就 ...

  8. 查询SQL中某表里有多少列包含某字段

    select c.name from SYSCOLUMNS as c left join SYSOBJECTS as t on c.id=t.id where c.name like '这里是某个字段 ...

  9. C# Log4Net使用指南(转)

    1           简介 1.1          Log4net的优点: 几乎所有的大型应用都会有自己的用于跟踪调试的API.因为一旦程序被部署以后,就不太可能再利用专门的调试工具了.然而一个管 ...

  10. centos安装中文支持(转)

    安装中文支持包. yum install fonts-chineseyum install fonts-ISO8859-2 -------- 一.安装中文支持方法1.在安装光盘中找到一下包进行安装.r ...