shell命令curl抓取网页内容-下载xls文件

通过curl命令抓取网页内容,关键点如下:

1.curl要模拟浏览器,最好是有个代理,因为很多站点都会搞个反爬虫什么的。

2.我的需求很简单,就是在国家外汇管理局上下载各种货币对美元的汇率。

http://www.safe.gov.cn/wps/portal/sy/tjsj_dmzsl

3.主要命令:curl,grep,awk,xls2txt,msql(LOAD DATA )。

curl:提取url

xls2txt:shell下的xls操作命令

xls2txt-0.14.tar.gz

下载地址:http://wizard.ae.krakow.pl/~jb/xls2txt/

msql(LOAD DATA ):导入到mysql数据库

备注:没有解决的问题就是下载的时候,下载下来的文件名不是转码后的文件名,而是utf8的字符串。

废话少说,贴一个粗糙版本,从抓取到操作xls

[[email protected] http_curl]# cat shellspider.sh

THE_DATE=`date +"%Y-%m-%d %H:%M:%S"`
echo "[$THE_DATE]:Begin  $1 $2  ......"

base_url="http://www.safe.gov.cn"
list_url="http://www.safe.gov.cn/wps/portal/sy/tjsj_dmzsl"
curl -S  -e "$list_url" -w %{http_code}"\\n"   -A "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0" -H "Host:www.safe.gov.cn"  -D header1.txt -b "JSESSIONID=x3nfVnDP0cGNnNf2d6GPWZ7NnGFVJCJ3pdPLl0pDjjMC31XB0YZ3\!504534437" -c servercookie1.txt   "$list_url"  |grep 'href="/wps/portal/' |grep  hbdm_store |awk -F '"' '{print $4}' > list.lst

echo "http_code=$http_code"
THE_DATE=`date +"%Y-%m-%d %H:%M:%S"`
echo "[$THE_DATE]:get list_url  ......"
sleep 3

index=`ls -lt *.xls|wc -l`
if [ 0 -ne ];then
   index=0
fi
 for i in `cat list.lst `
 do
  # index=$((${index}+1))
  # xls_file="$index.xls"   

   tmp_url="$base_url$i"
   download_page_url=${tmp_url//\!/\\!}
   #echo "$download_page_url"
   THE_DATE=`date +"%Y-%m-%d %H:%M:%S"`
   echo "[$THE_DATE]:get download_page_url=$download_page_url  ......"

   tmp_url=`curl -S  -e "$list_url" -w %{http_code} -A "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0" -H "Host:www.safe.gov.cn"  -D header2.txt -b "JSESSIONID=x3nfVnDP0cGNnNf2d6GPWZ7NnGFVJCJ3pdPLl0pDjjMC31XB0YZ3\!504534436" -c servercookie2.txt "$download_page_url"|grep urlArr|grep  '/wps/wcm/connect/' |grep '.xls' |awk -F "'" '{print $2}'`
   echo "http_code=$http_code"

   download_url=${tmp_url//\!/\\!}
   download_url="$base_url$download_url"
    #echo "$download_url"
   THE_DATE=`date +"%Y-%m-%d %H:%M:%S"`
   echo "[$THE_DATE]:get download_url=$download_url  ......"

    sleep 1
    curl -S  -e "$list_url" -w %{http_code}  -A "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0" -H "Host:www.safe.gov.cn"  -D header3.txt -b "JSESSIONID=x3nfVnDP0cGNnNf2d6GPWZ7NnGFVJCJ3pdPLl0pDjjMC31XB0YZ3\!504534435" -c servercookie3.txt -O "$download_url" >ok.code
    cat ok.code

    echo "http_code=$http_code"
   THE_DATE=`date +"%Y-%m-%d %H:%M:%S"`
   echo "[$THE_DATE]:end download_url=$download_url  ......"

   sleep 3
 done

  for i in `ls *\%*`
  do
   index=$((${index}+1))
   xls_file="$index.xls"
      ls -lt $i
      mv -f $i $xls_file
      xls2txt -n 0  $xls_file |head
  done

THE_DATE=`date +"%Y-%m-%d %H:%M:%S"`
echo "[$THE_DATE]:End  $1 $2  ......"

[[email protected] http_curl]# 
时间: 2024-08-08 02:26:55

shell命令curl抓取网页内容-下载xls文件的相关文章

CURL抓取网页内容

<?php $curl = curl_init();//初始化一个cURL对象 $url = "http://cart.jd.com/cart/cart.html?backurl=http://item.jd.com/176166.html&rid=0.9533184533 938766"; $header = array(); $header[] = 'User-Agent: 5.0 (iPhone; U; CPU iPhone OS 4_3 like Mac OS X

curl抓取网页内容php

1.cURL  curl是客户端向服务器请求资源的工具 2.cURL使用场景 网页资源:网页爬虫 webservice数据接口资源:动态获取接口数据 天气 号码归属地 ftp资源:下载ftp服务器里面的文件 其他资源:所有网络资源都可以用cURL访问和下载 3.在php中判断是否支持 linux判断是否支持 php -i | grep cURL windows是否支持 php -i 4.在php中使用cURL 1.初始化cURL  curl_init(); 2.向服务器发送请求 接受服务器数据

PHP cURL抓取网上图片

cURL的底层是由一个命令行工具实现的,用于获取远程文件或传输文件,更多的情况是用来模拟get/post表单提交.也可以用户文件上传,爬取文件,支持FTP/FTPS,HTTP/HTTPS等协议,通俗来讲,这些类型的服务器,cURL都可以抓取. 今天尝试了一下用cURL抓取无聊网网上的图片.上代码. 1 <?php 2 $url = 'http://wuliaoo.com/tuhua/'; 3 $ch = curl_init(); 4 5 curl_setopt($ch,CURLOPT_URL,$

phpjquery抓取网页内容

phpquery抓取网页内容,以下都经过测试,不过phpquery你最好用我上传的,别的不保证,其实我也是下载的. include 'phpQuery/phpQuery.php'; /** phpQuery::newDocumentFile("http://www.helloweba.com/blog.html"); $artlist = pq(".blog_li"); foreach($artlist as $li){ echo pq($li)->find(

linux命令行抓取网页快照-(xvfb+CutyCapt)

目的: 在一台没有安装X-server的Debian服务器上实现命令行抓取网页快照 软件: xvfb(在命令行下实现对X-server的模拟,渲染图形进行缓存)-在没有安装X-Server的环境下提供图像渲染 CutyCapt(模拟浏览器对网页进行下载.HTML.css渲染.Javascript执行,并将最终渲染完成的网页进行快照)- 主力干将 Qt(CutyCapt是基于此框架开发的) 实践: 1.安装CutyCapt.Qt及相关软件包: 帮助 1 2 3 4 5 sudo apt-get i

抓取网页内容并截图

需要调用windows.Forms命名空间,使用一个类库WebPreview1.1.rar_by_Kai.Ma,此处仅记录之. 给一个下载链接WebPreview1.1.rar_by_Kai.Ma.rar 抓取网页内容并截图,布布扣,bubuko.com

ASP.NET抓取网页内容

原文:ASP.NET抓取网页内容 一.ASP.NET 使用HttpWebRequest抓取网页内容 这种方式抓取某些页面会失败 不过,有时候我们会发现,这个程序在抓取某些页面时,是获不到所需的内容的,有时候甚至返回404的错误提示页,这是什么原因呢? 其实,很多人都忽略了一个问题,那就是服务器默认的浏览器问题.有的服务器默认的浏览器是手机浏览器,那么,当我抓取这个服务器下的网页是,就相当于用手机浏览器来打开网页,而如果要抓取的目标网页没有相应的手机网页的话,就会返回意想不到的结果,有的返回404

tcpdump教程 - 从命令行抓取和分析数据包

前言 在介绍和使用tcpdump之前,请确保您已经掌握或者了解如下几个关键概念,否则后面的内容让你有点痛苦. 能够在Linux命令行下工作 理解OSI七层网络协议的概念 熟悉各层的协议头部,重点是IP/TCP/UDP 交换机和路由器对应于OSI的协议层 另外还需要注意的是: tcpdump是基于Unix系统的命令行式的数据包嗅探工具.如果要使用tcpdump抓取其他主机MAC地址的数据包,必须开启网卡混杂模式,所谓混杂模式,用最简单的语言就是让网卡抓取任何经过它的数据包,不管这个数据包是不是发给

jsoup实现java抓取网页内容。

Java 程序在解析 HTML 文档时,相信大家都接触过 htmlparser 这个开源项目,我曾经在 IBM DW 上发表过两篇关于 htmlparser 的文章,分别是:从 HTML 中攫取你所需的信息和 扩展 HTMLParser 对自定义标签的处理能力.但现在我已经不再使用 htmlparser 了,原因是 htmlparser 很少更新,但最重要的是有了 jsoup . jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址.HTML 文本内容.它提供了一套非