抓取网页的脚本

一道企业shell编程实战题 http://oldboy.blog.51cto.com/2561410/1657042

本脚本对http://edu.51cto.com/的视频具有通用性,暂未发现bug,如有发现,请看官自行解决。

先上脚本

[[email protected] scripts]# cat html_to_table.sh        
#!/bin/bash
# oldboy linux training
# 2015-06-01
# Happy Children‘s Day
# 说明:本脚本来自老男孩linux21期学员张耀开发!
EduFile=/tmp/edu.html
EduFile2=/tmp/edu2.html
Url="$*"

# Judge url is ok?
curl -I $Url &>/dev/null 
[ $? -ne 0 ] &&{
   echo "Bad url,Please check it"
   exit 1
}

# Defined get pagenum and CourseId Functions
function getnum(){
        curl -s $Url>$EduFile
        grep ‘"pagesGoEnd"‘ $EduFile &>/dev/null
        if [ $? -eq 0 ]
          then
            num=`sed -rn ‘s#.*page=([0-9].*)" class="pagesGoEnd".*$#\1#gp‘ $EduFile`
        else
            num=`sed -rn ‘s|.*page=([0-9].*)#" class="pagesNum".*$|\1|gp‘ $EduFile`
        fi
        pagenum=${num:-1}
        CourseId=`echo $Url|awk -F "[-.]" ‘{print $4}‘`
}

# Defined curl html Functions
function Curl(){
        getnum
        for i in `seq $pagenum`
          do 
            curl "http://edu.51cto.com/index.php?do=course&m=lessions&course_id=$CourseId&page=$i" 1>>$EduFile 2>/dev/null
        done
}

# Defined Create table Functions
function table(){
        sum=""
        index=1
        sed -rn ‘/do=lesson/ s#<.*(<a href=")(.*)</h4>$#\1http://edu.51cto.com\2#gp‘ $EduFile > $EduFile2
        while read line
          do
            sum=$sum"<tr><th width="40" scope="row">$index</th><td width="520">$line</td>"
            ((index++))
        done <$EduFile2
}

# Defined Create html Functions
function html(){
        cat >/tmp/oldboy.html<<-END
        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>test</title>
        </head>

        <body>
        <table width="560" border="1">
        $sum
        </table>
        </body>
        </html>
        END
}

function main(){
        Curl
        table
        html
}

main

测试网页http://edu.51cto.com/course/course_id-839.html

[[email protected] scripts]# sh html_to_table.sh http://edu.51cto.com/course/course_id-839.html 
[[email protected] scripts]# sz /tmp/oldboy.html

我将网页文件的table部分粘贴上来

1 合格运维素质及挖掘内心学习动力
2 老男孩23期开班注意事项
3 跟着老男孩可以学到什么本领--老男孩核心教育思想
4 学习运维到底该学习什么-老男孩核心教育思想
5 培养好的学习听课思维习惯
6 学好运维的思想转变
7 培养自己成为素质人才
8 如何才能学好linux运维重要思想-老男孩核心理念
9 计算机及网站服务器硬件-机箱-电源介绍01
10 计算机及网站服务器硬件-主板-CPU-内存-硬盘02
11 硬件体系优化及IO优化核心优化原理详解
12 其他硬件信息简单介绍
13 计算机硬件重要知识点总结01
14 计算机硬件重要知识点总结02
15 课后作业及内容预习
16 上节知识内容回顾
17 操作系统介绍及作用讲解
18 什么是linux及特点
19 Unix的历史介绍
20 Unix的5大优秀特性
21 Unix操作系统革命故事
22 Linux的诞生介绍
23 Linux的发展历程介绍
24 Linux发展过程中的重要必知人物
25 自由软件的概念介绍
26 自由软件基金会FSF介绍
27 插入一段学习运维的重要思想
28 GNU核心知识介绍
29 GPL核心知识介绍
30 Linux系统的组成
31 Linux为什么受欢迎
32 Linux的重要特点集合介绍
33 Linux的三大企业应用领域介绍
34 Linux的各类发行版及区别
35 如何选择Linux版本学习专家建议
36 Centos的版本介绍及选择建议
37 搭建Linux学习环境的重要建议
38 安装及创建vmware虚拟机实战
39 vmware核心技术网卡三种模式之NAT介绍
40 vmware核心技术网卡三种模式之bridged介绍
41 vmware核心技术网卡三种模式之HOST-ONLY模式介绍
42 实战完成创建新的VM寻虚拟机
43 Centos6.6安装初步及安装可能的故障讲解
44 32位和64位Linux的区别介绍
45 开始实战安装Centos Linux系统
46 Linux系统磁盘分区知识介绍
47 Linux设备的命名及Linux基本分区方案
48 Linux分区类型raid-lvm介绍及企业选择建议
49 linux分区重要知识介绍-挂载点-文件系统类型等
50 Linux关键包选择讲解及安装完成
51 重启引导及Linux内核版本号介绍
52 IP地址介绍及为Linux配置IP地址
53 网卡设置的相关问题答疑
54 SSH客户端连接服务器故障问题分析与解决
55 老男孩第一关命令考试vi-vim-cat-touch-echo命令讲解
56 老男孩第一关命令考试-重定向-追加重定向-标准输入输出知识实战
57 老男孩第一关命令考试-cat-cp命令企业应用实战
58 老男孩第一关命令考试-mv-ls-man-help等核心命令实战讲解
59 课后作业与预习
60 重要运维思想之观察和总结案例
61 重要运维思想之如何与高手愉快交往问问题
62 重要运维思想之如何和别人请教问题细节
63 抓住高手的心-让他不回答你都难
64 上节内容简单复习回顾
65 find命令企业及应用案例精讲
66 删除目录及特殊字符单双点重点讲解
67 08-cat-grep-sed企业重点案例应用讲解
68 mkdir-yum-rpm-tree命令应用案例讲解
69 学好linux命令的重要学习思想
70 tree-rpm命令使用深入
71 别名的深度企业案例多种方法讲解
72 linux别名深层原理-作用-实战讲解
73 特殊家目录符号介绍
74 结合企业面试引出seq命令深度讲解
75 tail命令企业应用及解决实际面试题案例
76 sed企业级面试应用案例讲解-打印行号
77 awk命令使用介绍及实战讲解
78 利用awk命令解决企业级面试应用案例
79 grep命令解决企业案例应用实战讲解及画图重要思想
80 sed命令替换功能深度应用详解及总结
81 复杂企业级应用案例find配合sed综合实战讲解
82 第一关命令应用学习总结及大扩展命令重要讲解
83 Linux命令行重要快捷键讲解
84 SSH远程连接原理及故障排错详解
85 SSH客户端的使用技巧1
86 SSH远程连接故障排错详解
87 SSH客户端实现和LINUX共享文件
88 利用SSH客户端批量管理LINUX重要应用
89 SSH客户端复制标签机批量复制标签小技巧
90 VM快照-克隆重要应用讲解及克隆后网卡问题解决
91 查看Linux基本信息命令-uname-hostname及重要运维思想
92 Linux系统useradd-passwd添加账号密码讲解及su命令介绍
93 Linux优化之Selinux详解及运行级别详解
94 Linux优化之需要开机启动的重点服务详解
95 Linux优化之利用chkconfig-sed-awk多种方法解决开机启动实战
96 Linux优化之iptables防火墙处理及运维思想
97 chkconfig命令应用小结
98 Linux优化之安全最小化5个思想
99 课后作业与预习
100 重要基础命令回顾复习
101 极重要基础命令三剑客加find回顾复习实战
102 sed命令实战复习回顾
103 awk命令实战复习回顾
104 grep命令实战复习回顾
105 上节Linux优化项复习
106 超级优化Linux远程SSH连接
107 比较工具diff-vimdiff-windows比较工具讲解
108 运维思想-成功最有效的方法
109 形象讲解sudo命令简单原理及实践优化用户使用命令
110 sudo解决方案企业级应用实战讲解
111 运维核心学习思想-总裁班分享潜意识问题
112 which命令实战及原理详解-PATH实战配置
113 有关bash内置命令特殊性问题讲解
114 Linux字符集介绍及解决中文乱码实战
115 运维核心思想-学会帮助鼓励别人
116 时间同步介绍及实战配置-介绍定时任务及简单配置
117 时间同步服务企业生产应用架构说明
118 优化终端超时以及历史记录数
119 Linux历史记录数控制及隶属记录数文件控制
120 文件描述符介绍作用及实战配置方案
121 Linux内核参数基础优化
122 隐藏LINUX软件名及内核版本
123 超级优化锁定系统重要系统文件防止篡改
124 禁PING以及清理系统多余账号说明
125 为grub引导菜单加密码保护grub被随意修改
126 禁PING实战及软件漏洞升级
127 linux系统基础优化16条知识汇总
128 配置Linux软件下载更新源地址
129 wget命令企业级应用参数详解
130 讲过命令回顾及分类总结方法说明
131 less-more使用方法及区别实战讲解
132 Linux目录结构知识介绍
133 Linux目录结构树详细原理讲解
134 Linux目录结构的历史介绍
135 Linux目录层次标准及目录介绍
136 linux重要目录及子目录介绍详解
137 Linux目录结构重点小结回顾
138 课后作业与预习
时间: 2024-08-27 15:30:29

抓取网页的脚本的相关文章

对抓取网页的脚本的研究

对抓取网页的脚本http://life2death.blog.51cto.com/7550586/1657133 的研究: 声明:本人只是拿来学习研究,谢谢浮夸往事大神. 一道企业shell编程实战题 http://oldboy.blog.51cto.com/2561410/1657042 本脚本对http://edu.51cto.com/的视频具有通用性,暂未发现bug,如有发现,请看官自行解决. ------------------------------------------------

python学习笔记-抓取网页图片脚本

初学者一枚,代码都是模仿网上的.亲测可用~ 运行脚本的前提是本机安装了httplib2模块 #!/usr/bin/python import os import re import string import urllib #author:reed #date:2014-05-14 def GetWebPictures(): url=raw_input('please input the website you want to download:') imgcontent=urllib.urlo

Asp.net 使用正则和网络编程抓取网页数据(有用)

Asp.net 使用正则和网络编程抓取网页数据(有用) /// <summary> /// 抓取网页对应内容 /// </summary> /// <param name="strUrl">採集地址</param> /// <param name="Begin">開始字符</param> /// <param name="End">结束字符</param&g

Asp.net 使用正则和网络编程抓取网页数据(实用)

Asp.net 使用正则和网络编程抓取网页数据(实用) /// <summary> /// 抓取网页相应内容 /// </summary> /// <param name="strUrl">采集地址</param> /// <param name="Begin">开始字符</param> /// <param name="End">结束字符</param&g

PHP CURL抓取网页 simple_html_dom类

抓取网页数据后 数据录入到discuz中 <?php include('simple_html_dom.php'); function urlText(){ $url = 'http://www.kxt.com/data/3.html';//外汇 $ch=curl_init(); $timeout = 1; // echo CURLOPT_URL; // CURLOPT_URL: 这是你想用PHP取回的URL地址.你也可以在用curl_init()函数初始化时设置这个选项 curl_setopt

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

使用wget工具抓取网页和图片 发表于1年前(2014-12-17 11:29)   阅读(2471) | 评论(14) 85人收藏此文章, 我要收藏 赞7 wget 网页抓取 图片抓取 目录[-] 奇怪的需求 wget概述 wget尝试 wget正解 奇怪的需求 公司需要将服务器的网页缓存到路由器,用户在访问该网页时就直接取路由器上的缓存即可.虽然我不知道这个需求有什么意义,但还是尽力去实现吧. wget概述 wget是unix和类unix下的一个网页抓取工具,待我熟悉它后,发现它的功能远不止

jsoup抓取网页+详细讲解

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

python 处理抓取网页乱码

python 处理抓取网页乱码问题一招鲜 相信用python的人一定在抓取网页时,被编码问题弄晕过一阵 前几天写了一个测试网页的小脚本,并查找是否包含指定的信息. 在html = urllib2.open(url).read()  时,打印到控制台始终出现乱码. 一般的解决办法就是html.decode('utf-8').encode('gb2312'),不过这个即使用了,也没能解决我的问题 这里有两个问题,第一个你要知道网页的编码格式是utf-8     第二你得确定你的系统是gb2312的,

python多线程实现抓取网页

Python实现抓取网页 下面的Python抓取网页的程序比较初级,只能抓取第一页的url所属的页面,只要预定URL足够多,保证你抓取的网页是无限级别的哈,下面是代码: ##coding:utf-8 ''' 无限抓取网页 @author wangbingyu @date 2014-06-26 ''' import sys,urllib,re,thread,time,threading ''' 创建下载线程类 ''' class download(threading.Thread): def __