wget多进程抓取的实现
把以前博客的东西夜迁移过来吧,这个是以前公司做的,原来放在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多进程抓取的实现的更多相关文章
- 使用wget工具抓取网页和图片 成功尝试
使用wget工具抓取网页和图片 发表于1年前(2014-12-17 11:29) 阅读(2471) | 评论(14) 85人收藏此文章, 我要收藏 赞7 wget 网页抓取 图片抓取 目录[-] ...
- 使用wget工具抓取网页和图片 及 相关工具几个
想保存一些网页,最后找到这 wget 的 shell脚本,虽然不是太理想,亲测可用呢. 使用wget工具抓取网页和图片 来源 https://my.oschina.net/freestyletim ...
- wget全站抓取命令
wget -r -p -np -k http://www.freebuf.com/ 忽视,避开robots.txt,加一个-e robots=off 用wget避开robots.txt的下载限制 wg ...
- PHP多进程编程(3):多进程抓取网页的演示
我们知道,从父进程到子经常的数据传递相对比较容易一些,但是从子进程传递到父进程就比较的困难. 有很多办法实现进程交互,在php中比较方便的是 管道通信.当然,还可以通过 socket_pair 进行通 ...
- Python多进程方式抓取基金网站内容的方法分析
因为进程也不是越多越好,我们计划分3个进程执行.意思就是 :把总共要抓取的28页分成三部分. 怎么分呢? # 初始range r = range(1,29) # 步长 step = 10 myList ...
- Python爬虫【三】利用requests和正则抓取猫眼电影网上排名前100的电影
#利用requests和正则抓取猫眼电影网上排名前100的电影 import requests from requests.exceptions import RequestException imp ...
- Python开源爬虫项目代码:抓取淘宝、京东、QQ、知网数据--转
数据来源:数据挖掘入门与实战 公众号: datadw scrapy_jingdong[9]- 京东爬虫.基于scrapy的京东网站爬虫,保存格式为csv.[9]: https://github.co ...
- Python 3.6 抓取微博m站数据
Python 3.6 抓取微博m站数据 2019.05.01 更新内容 containerid 可以通过 "107603" + user_id 组装得到,无需请求个人信息获取: 优 ...
- wget整站抓取、网站抓取功能;下载整个网站;下载网站到本地
wget -r -p -np -k -E http://www.xxx.com 抓取整站 wget -l 1 -p -np -k http://www.xxx.com 抓取第一级 - ...
随机推荐
- POJ 1182 食物链(并查集拆点)
[题目链接] http://poj.org/problem?id=1182 [题目大意] 草原上有三种物种,分别为A,B,C A吃B,B吃C,C吃A. 1 x y表示x和y是同类,2 x y表示x吃y ...
- C_const
const * const在*左边,指向一个常量. * const const在*右边,指针是常量. 1 const int *p;//指向常量的指针,与下面一样 2 int const *p1;// ...
- 改动网卡IP信息
改动网卡IP信息的情况有非常多种,只是从大体上能够分为两种,一种是暂时改动,重新启动网络服务后改动便会失效:一种是永久改动,重新启动网络服务后才会生效.一般暂时改动应用在暂时的动作中,我们通过分类名字 ...
- 基于HTML5 Canvas的网页画板实现教程
HTML5的功能非常强大,尤其是Canvas的应用更加广泛,Canvas画布上面不仅可以绘制任意的图形,而且可以实现多种多样的动画,甚至是一些交互式的应用,比如网页网版.这次我们要来看的就是一款基于H ...
- gdb调试python
一.概述 有时我们会想调试一个正在运行的Python进程,或者一个Python进程的coredump.例如现在遇到一个mod_wsgi的进程僵死了,不接受请求,想看看究竟是运行到哪行Python代码呢 ...
- 谈谈css3的字体大小单位[rem]
最近接收了一份面试题,内容是移动端传播的H5(在中国通常这么叫)广告页. 秉承移动端web尽量少用px的概念,我使用rem进行了一次重构.对于rem,基本是给 html/body 元素定义一个字体大小 ...
- 初识-Android之智能短信项目相关技术整理
标签页切换采用传统的TabHost: 采用TabActivty实现TabHost. 效果图-后补: 相关技术详解推荐: http://blog.csdn.net/zhouli_05/article/d ...
- Struts 2.x Unable to load configuration. - action
问题分析:遇到该问题一般是struts中某个配置文件没有正确配置,比如: 1.class中的TestAction没有成功加载: <constant name="struts.i18n. ...
- R 语言学习笔记
data() 调用内置数据集 help(women) 查看数据集women的帮助文档 当忘记函数名称时可以按关键字搜索:help.search(),简写为??“” str(var) 查看R对象内部结 ...
- 微信sdk (1)
<?php /** * wechat php test */ //define your token define("TOKEN", "weixin"); ...