1. 现科大网页的源码中还有文章的点击率,何不做一个文章点击率的降序排行。简单,前面入门(1)基本已经完成我们所要的功能了,本篇我们仅仅需要添加:一个通过正则获取文章点击率的数字;再加一个根据该数字的插入排序。ok,大功告成!
  2. 单说一下本文插入排序的第一个循环,找到列表中最大的数,放到列表 0 的位置做观察哨。
  3. 代码:
    # -*- coding: utf-8 -*-
    # 程序:爬取点击排名前十的科大热点新闻
    # 版本:0.1
    # 时间:2014.06.30
    # 语言:python 2.7
    #---------------------------------import string,urllib2,re,sys
    #解决这个错误:UnicodeEncodeError: 'ascii' codec can't encode characters in position 32-34: ordinal not in range(128)
    reload(sys)
    sys.setdefaultencoding('utf-8')class USTL_Spider:def __init__(self,url,num=10):self.myUrl=url#存放获取的标题和网址self.datas=[]self.num=numprint 'The Spider is Starting!'def ustl_start(self):myPage=urllib2.urlopen(self.myUrl+'.html').read().decode('gb2312')if myPage==None:print 'No such is needed!'return#首先获得总的页数endPage=self.find_endPage(myPage)if endPage==0:return#处理第一页的数据
            self.deal_data(myPage)#处理除第一页之外的所有数据
            self.save_data(self.myUrl,endPage)#获取总的页数def find_endPage(self,myPage):#找到网页源码中带有尾页的一行。eg: >8</font> xxxxx title="尾页"#匹配中文,需要utf-8格式,并且变成ur''。#.*?:非贪婪匹配任意项#re.S:正则表达式的 . 可以匹配换行符myMatch=re.search(ur'>8</font>(.*?)title="尾页"',myPage,re.S)endPage=0if myMatch:#找到带尾页行中的数字。eg:xxxx_ NUM .htmlendPage=int(re.match(r'(.*?)_(\d+).html',myMatch.group(1),re.S).group(2))else:print 'Cant get endPage!'return endPage#将列表中元组依次写入到我的d盘tests文件夹sort_ustl.txt文件上def save_data(self,url,endPage):self.get_data(url,endPage)f=open("d:\\tests\\sort_ustl.txt",'w')for item in self.datas:f.write(item[1]+', '+item[0])f.close()print 'Over!'#提取每个网页def get_data(self,url,endPage):for i in range(2,endPage+1):print 'Now the spider is crawling the %d page...' % i#字符串做decode时候,加'ignore'忽略非法字符myPage=urllib2.urlopen(self.myUrl+'_'+str(i)+'.html').read().decode('gb2312','ignore')if myPage==None:print 'No such is needed!'returnself.deal_data(myPage)#获得我们想要的字符串,追加到datas中def deal_data(self,myPage):#这里我们想要的是文章标题,网址和点击率。将(标题网址,点击率)元组添加到datas列表中,对datas进行插入排序myItems=re.findall(r'<TD width=565>.*?href="(.*?)">(.*?)</a>.*?class=textthick2> (\d+)</font>',myPage,re.S)for site,title,click in myItems:self.datas.append(('%s :%5swww.ustl.edu.cn%s\n' %(title,' ',site),click))self.insert_sort()#插入排序,只需要点击排名前self.num(默认是10)的文章。def insert_sort(self):for i in range(len(self.datas)-1,0,-1):if int(self.datas[i][1])>int(self.datas[i-1][1]):tmp=self.datas[i]self.datas[i]=self.datas[i-1]self.datas[i-1]=tmpfor i in range(2,len(self.datas)):v=self.datas[i]j=iwhile int(v[1])>int(self.datas[j-1][1]):self.datas[j]=self.datas[j-1]j-=1self.datas[j]=vdel self.datas[self.num:len(self.datas)]#我们需要爬取的网页
    ustl=USTL_Spider('http://www.ustl.edu.cn/news/news/RDXW')
    #ustl=USTL_Spider('http://www.ustl.edu.cn/news/news/ZHXX')
    ustl.ustl_start()

    不足:我想当第一页运行过插入排序后,在其他页进行插入之前,可以直接将小于已排序列表中最后一个元素的元素直接pass,不必在放到datas中。

  4. 果截图:
  5. 考资料:

    1.python list的方法你需要看看吧:

http://www.cnblogs.com/zhengyuxin/articles/1938300.html

    2.python 默认参数值(主要是这本书挺好的,薄薄薄薄薄薄。。):

    

http://woodpecker.org.cn/abyteofpython_cn/chinese/ch07s04.html

转载于:https://www.cnblogs.com/jhooon/p/3818079.html

(原)python爬虫入门(2)---排序爬取的辽宁科技大学热点新闻相关推荐

  1. Python爬虫入门 | 7 分类爬取豆瓣电影,解决动态加载问题

      比如我们今天的案例,豆瓣电影分类页面.根本没有什么翻页,需要点击"加载更多"新的电影信息,前面的黑科技瞬间被秒--   又比如知乎关注的人列表页面:   我复制了其中两个人昵称 ...

  2. Python爬虫入门——2. 2爬取酷狗音乐top1-500歌曲信息

    有了第一个程序的基础,我们现在来爬取酷狗音乐top500的歌曲信息.连接http://www.kugou.com/yy/rank/home/1-8888.html 我们第一个程序只爬取了一个页面的数据 ...

  3. python爬虫教程网-python爬虫入门10分钟爬取一个网站

    一.基础入门 1.1什么是爬虫 爬虫(spider,又网络爬虫),是指向网站/网络发起请求,获取资源后分析并提取有用数据的程序. 从技术层面来说就是 通过程序模拟浏览器请求站点的行为,把站点返回的HT ...

  4. python爬虫入门教程:爬取网页图片

    在现在这个信息爆炸的时代,要想高效的获取数据,爬虫是非常好用的.而用python做爬虫也十分简单方便,下面通过一个简单的小爬虫程序来看一看写爬虫的基本过程: 准备工作 语言:python IDE:py ...

  5. python爬虫入门实战!爬取博客文章标题和链接!

    最近有小伙伴和我留言想学python爬虫,那么就搞起来吧. 准备阶段 爬虫有什么用呢?举个最简单的小例子,你需要<战狼2>的所有豆瓣影评.最先想的做法可能是打开浏览器,进入该网站,找到评论 ...

  6. Python爬虫入门教程:爬取妹子图网站 - 独行大佬

    妹子图网站---- 安装requests打开终端:使用命令pip3 install requests等待安装完毕即可使用接下来在终端中键入如下命令?123# mkdir demo # cd demo# ...

  7. 小白Python爬虫入门实例1——爬取中国最好大学排名

    中国大学慕课python网络爬虫与信息提取--定向爬虫"中国最好大学排名信息爬取" 由于课程中老师给的案例有些许瑕疵,加之至今该网页的首页已经更新,原网址已不存在,因此笔者在老师给 ...

  8. 给小白的python爬虫入门之批量爬取别样网的视频素材

    网络爬虫,听起来很神秘,其实也不过如此,简单来说,只要网站开放了端口即用户能访问这个网站,那么无论这个网站的反爬机制做的有多么好,只要你的技术够,总会有机会破解它. 换句话说,不是你的网站很安全,而是 ...

  9. Python爬虫入门-小试ImagesPipeline爬取pixabay和煎蛋之为什么是‘404’

    第一部分.利用ImagesPipeline爬取pixabay里面的美女图 进入pixabay网站在搜索框中输入关键字beauty,并且简化一下URL中的参数: 尝试进行翻页,可见URL中只有一个参数p ...

最新文章

  1. 阿里程序员工作小技巧:理解CPU分支预测,提高代码效率
  2. linux 打开telnet登录,linux开启telnet
  3. markdownpad2 html渲染组件出错_Day68 Django forms组件
  4. RepVGG算法详解
  5. js前端——滑稽官网的亮瞎眼系列滑稽大法
  6. 联系人字段中增加生日字段
  7. 学生个人网页设计作品 学生个人网页模板 简单个人主页成品 个人网页制作 HTML学生个人网站作业设计 汉语言文学设计题材网页
  8. WPF实现半圆形导航菜单
  9. 贝壳找房APP安装包瘦身
  10. mac 配置 k8s 开发环境(安装go、docker、kubectl、minikube、kind,配置 goland)
  11. 用pygame为大家燃放新年烟花
  12. Python撩妹实战——教你用微信每天给女朋友说晚安
  13. Echarts系列之怎么让文字纵向显示
  14. 配送开办费大范围是大幅度撒
  15. IDLE行号设置及linenumbers修改
  16. 纵然前路坎坷,也要毅然前行!2020年终总结!
  17. Java接口RandomAccess
  18. 如何取消 文件夹在TabX中打开
  19. matlab欠阻尼系统注释,MATLAB 实用教程:第5章MATLAB程序设计
  20. 创建对象和对象的复制

热门文章

  1. ACR2010_常规医疗环境下TNF拮抗剂对RA骨侵蚀的修复作用
  2. Fedora Linux虚拟机常用开发工具
  3. 答简书安卓公测群里朋友的提问
  4. ceres-solver库使用示例
  5. ArcGIS制图表达Representation-制图表达原理
  6. Flutter基础布局组件及实现
  7. matlab 连通域数量,【Matlab】找到矩阵中每个连通域的最小值
  8. 北理工计算机专业汇编教材,李元章_北京理工大学计算机学院
  9. java基础知识梳理_java基础知识点梳理3
  10. 为什么eolinker发送老是等待_eolinker环境管理之开发、测试和生产环境