python爬51cto某一课程表

因为看见老男孩的学员做过这一期,也很有兴趣,并且刚在学python,所以用python实现了下。由于刚学习python,肯定还有很多地方可以优化。

#!/bin/bash
# oldboy linux training
# 2015-06-01
# Happy Children‘s Day
# 说明:本脚本来自老男孩linux21期学员张耀开发!
EduFile=/tmp/edu.html
EduFile2=/tmp/edu2.html
Url="$*"
 
# Check for given parameters 
[ $# -eq 0 ] && {
   echo "USAGE: /bin/sh $0 http://...."
   exit 1
}
 
# 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
#!/usr/bin/env python
#coding:utf-8
import urllib,urllib2,sys,os,re
reload(sys)
sys.setdefaultencoding(‘utf-8‘) 

def get_course_id_page_num(URI):
    orgin = urllib2.urlopen(URI).read().decode(‘utf-8‘).encode(‘utf-8‘)
    try:
        page_pattern = re.compile(r‘<a href="/index.php?.*course_id=(.*)&page=(.*)" class="pagesGoEnd"‘)
        course_id = page_pattern.search(orgin).group(1)
        pagenum = page_pattern.search(orgin).group(2)
    except AttributeError:
        page_pattern = re.compile(r‘<a href="/index.php?.*course_id=(.*)&page=(.*)#" class="pagesNum"‘)
        course_id = page_pattern.search(orgin).group(1)
        pagenum = page_pattern.search(orgin).group(2)
    return (course_id,pagenum)
def get_url_title(course,page):
    #cto = file(‘/tmp/edu.51cto.html‘,‘a+‘)
    url= "http://edu.51cto.com/index.php?do=course&m=lessions&course_id=" + str(course) + "&page=" + str(page)
    request = urllib2.urlopen(url).read().decode(‘utf-8‘).encode(‘utf-8‘)
    url_title_pattern = re.compile(r‘<a href="(.*)" target="_blank">(.*)</a></h4>‘)
    ut=url_title_pattern.findall(request)
    cto_table_1 = ‘<tr><th scope=row>+_+</th><td><a href="‘
    cto_table_2 = ‘http://edu.51cto.com‘
    cto_table_3 = ‘" target="_blank">‘
    cto_table_4 = ‘</a></td>‘
    for k,v in ut:
        if ‘lesson‘ in k:
        line = cto_table_1 + cto_table_2 + k + cto_table_3 + v + cto_table_4
        print >> cto, line
     #cto.close()
if __name__ == "__main__":
    URI = "http://edu.51cto.com/course/course_id-839.html"
    #URI = sys.argv[1]
    cto = file(‘/tmp/edu.51cto.html‘,‘a+‘)
    cto_head = ‘<head>\n<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>\n<title>51cto</title>\n</head>\n<body><table width="560" border="1">\n‘
    print >> cto, cto_head
    course_id,pagenum = get_course_id_page_num(URI)
    for i in range(1,int(pagenum) + 1):
        get_url_title(course_id,i)
        cto_tail = ‘</table>\n</body>\n</html>‘
        print >> cto, cto_tail
    cto.close()

以下就是程序运行之后的效果图了

时间: 2024-10-21 15:11:24

python爬51cto某一课程表的相关文章

没有内涵段子可以刷了,利用Python爬取段友之家贴吧图片和小视频(含源码)

由于最新的视频整顿风波,内涵段子APP被迫关闭,广大段友无家可归,但是最近发现了一个"段友"的app,版本更新也挺快,正在号召广大段友回家,如下图,有兴趣的可以下载看看(ps:我不是打广告的,没收广告费的) 同时,之前同事也发了一个贴吧的段子聚居地,客官稍等,马上奉上连接:段友之家?https://tieba.baidu.com/f?ie=... 然后呢,看到上面,确实好多段友在上面,于是乎,我就想爬取他们的图片和小视频,就有了这篇文章的主题: 其实吧,用Python爬取网站数据是最基

python爬取B站千万级数据,发现了这些热门UP主的秘密!

Python(发音:英[?pa?θ?n],美[?pa?θɑ:n]),是一种面向对象.直译式电脑编程语言,也是一种功能强大的通用型语言,已经具有近二十年的发展历史,成熟且稳定.它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务.它的语法非常简捷和清晰,与其它大多数程序设计语言不一样,它使用缩进来定义语句. Python支持命令式程序设计.面向对象程序设计.函数式编程.面向切面编程.泛型编程多种编程范式.与Scheme.Ruby.Perl.Tcl等动态语言一样,Python具备垃圾回收

分手后,小伙怒用Python爬取上万空姐照片,赢取校花选举大赛!

首先展示下Python爬取到的成果:   我做什么都要争第一,这次的校花投票选举大赛也不例外,虽然我是个男的......但是我看到了前女友竟然已经有三百多票排到第三名了,我怎么能眼睁睁的看着她优秀呢?我必须要让她排到前三除外,·不行,必须是前十开外!我想到一个办法就是用Python开发一个百度爬虫,爬取百度所有美女的照片,然后申请多个账号进行参赛.   其实比起Python爬取图片外,我对微信上的投票小程序也有所研究,已经有了Python实现微信上刷票脚本的思路,这个我下次再分享大家,这次先学习

python爬取小视频,看完身体一天不如一天!

Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以在这里给各位看官们准备了高价值Python学习视频教程及相关电子版书籍,都放在了文章结尾,欢迎前来领取!python爬取小视频记录学习python简单爬虫小程序,记录代码和学习过程环境信息python 2.7.12分析与步骤 要分析网站信息 http://www.budejie.com/video/ 查看网页不同页面的信息http://www.budejie.com/video/2http://www.budejie.

使用python爬取csdn博客访问量

最近学习了python和爬虫,想写一个程序练练手,所以我就想到了大家都比较关心的自己的博客访问量,使用python来获取自己博客的访问量,这也是后边我将要进行的项目的一部分,后边我会对博客的访问量进行分析,以折线图和饼图等可视化的方式展示自己博客被访问的情况,使自己能更加清楚自己的哪些博客更受关注,博客专家请勿喷,因为我不是专家,我听他们说专家本身就有这个功能. 一.网址分析 进入自己的博客页面,网址为:http://blog.csdn.net/xingjiarong 网址还是非常清晰的就是cs

python爬取某个网站的图片并保存到本地

python爬取某个网站的图片并保存到本地 #coding:utf-8 import urllib import re import sys reload(sys) sys.setdefaultencoding('gb2312') #获取整个页面的数据 def getHtml (url): page = urllib.urlopen(url) html = page.read() return html #保存图片到本地 def getImg(html): reg = r'src="(.+?\.

python爬爬爬之单网页html页面爬取

python爬爬爬之单网页html页面爬取 作者:vpoet 日期:大约在夏季 注:随意copy 不用告诉我 #coding:utf-8 import urllib2 Response=urllib2.urlopen("http://www.baidu.com"); Html=Response.read(); print Html; 运行结果: 再看看百度的源码: 是一样,没骗你吧

python爬取某个网页的图片-如百度贴吧

python爬取某个网页的图片-如百度贴吧 作者:vpoet 日期:大约在冬季 注:随意copy,不用告诉我 #coding:utf-8 import urllib import urllib2 import re if __name__ =="__main__": rex=r'src="(http://imgsrc.baidu.com/forum/w%3D580.*?\.jpg)"'; Response=urllib2.urlopen("http://t

使用python爬取MedSci上的影响因子排名靠前的文献

使用python爬取medsci上的期刊信息,通过设定条件,然后获取相应的期刊的的影响因子排名,期刊名称,英文全称和影响因子.主要过程如下: 首先,通过分析网站http://www.medsci.cn/sci的交互过程.可以使用谷歌或火狐浏览器的“审查元素-->Network”,然后就可以看到操作页面就可以看到网站的交互信息.当在网页上点击“我要查询”时,网页会发送一个POST消息给服务器,然后,服务器返回查询结果 然后,将查询到的结果使用正则表达式提取出需要的数据. 最后将提取出的数据输出到文