python编写爬虫小程序


Posted in Python onMay 14, 2015

起因

深夜忽然想下载一点电子书来扩充一下kindle,就想起来python学得太浅,什么“装饰器”啊、“多线程”啊都没有学到。
想到廖雪峰大神的python教程很经典、很著名。就想找找有木有pdf版的下载,结果居然没找到!!CSDN有个不完整的还骗走了我一个积分!!尼玛!!
怒了,准备写个程序直接去爬廖雪峰的教程,然后再html转成电子书。

过程

过程很有趣呢,用浅薄的python知识,写python程序,去爬python教程,来学习python。想想有点小激动……
果然python很是方便,50行左右就OK了。直接贴代码:

# coding:utf-8
import urllib

domain = 'http://www.liaoxuefeng.com'      #廖雪峰的域名
path = r'C:\Users\cyhhao2013\Desktop\temp\\'  #html要保存的路径

# 一个html的头文件
input = open(r'C:\Users\cyhhao2013\Desktop\0.html', 'r')
head = input.read()

# 打开python教程主界面
f = urllib.urlopen("http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000")
home = f.read()
f.close()

# 替换所有空格回车(这样容易好获取url)
geturl = home.replace("\n", "")
geturl = geturl.replace(" ", "")

# 得到包含url的字符串
list = geturl.split(r'em;"><ahref="')[1:]

# 强迫症犯了,一定要把第一个页面也加进去才完美
list.insert(0, '/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000">')

# 开始遍历url List
for li in list:
  url = li.split(r'">')[0]
  url = domain + url       #拼凑url
  print url
  f = urllib.urlopen(url)
  html = f.read()

  # 获得title为了写文件名
  title = html.split("<title>")[1]
  title = title.split(" - 廖雪峰的官方网站</title>")[0]

  # 要转一下码,不然加到路径里就悲剧了
  title = title.decode('utf-8').replace("/", " ")

  # 截取正文
  html = html.split(r'<!-- block main -->')[1]
  html = html.split(r'<h4>您的支持是作者写作最大的动力!</h4>')[0]
  html = html.replace(r'src="', 'src="' + domain)

  # 加上头和尾组成完整的html
  html = head + html+"</body></html>"

  # 输出文件
  output = open(path + "%d" % list.index(li) + title + '.html', 'w')
  output.write(html)
  output.close()

简直,人生苦短我用python啊!

以上所述就是本文的全部内容了,希望大家能够喜欢。

Python 相关文章推荐
将Django框架和遗留的Web应用集成的方法
Jul 24 Python
最大K个数问题的Python版解法总结
Jun 16 Python
利用python程序帮大家清理windows垃圾
Jan 15 Python
Django中间件实现拦截器的方法
Jun 01 Python
Python 使用PIL中的resize进行缩放的实例讲解
Aug 03 Python
详解python分布式进程
Oct 08 Python
python2.7 安装pip的方法步骤(管用)
May 05 Python
Python 把序列转换为元组的函数tuple方法
Jun 27 Python
Python sys模块常用方法解析
Feb 20 Python
python让函数不返回结果的方法
Jun 22 Python
python与js主要区别点总结
Sep 13 Python
Python中openpyxl实现vlookup函数的实例
Oct 28 Python
讲解Python中if语句的嵌套用法
May 14 #Python
详解Python中的条件判断语句
May 14 #Python
Python3通过Luhn算法快速验证信用卡卡号的方法
May 14 #Python
Python入门教程之if语句的用法
May 14 #Python
Python随机生成信用卡卡号的实现方法
May 14 #Python
讲解Python中运算符使用时的优先级
May 14 #Python
讲解Python中的标识运算符
May 14 #Python
You might like
仿Aspnetpager的一个PHP分页类代码 附源码下载
2012/10/08 PHP
php使用mkdir创建多级目录入门例子
2014/05/10 PHP
PHP易混淆函数的区别及用法汇总
2014/11/22 PHP
smarty中常用方法实例总结
2015/08/07 PHP
JavaScript 放大镜 放大倍率和视窗尺寸
2011/05/09 Javascript
JavaScript的原型继承详解
2015/02/15 Javascript
JavaScript面向对象程序设计教程
2016/03/29 Javascript
JS获取复选框的值,并传递到后台的实现方法
2016/05/30 Javascript
解析JavaScript数组方法reduce
2016/12/12 Javascript
ES6新特性之函数的扩展实例详解
2017/04/01 Javascript
vue的Virtual Dom实现snabbdom解密
2017/05/03 Javascript
简单谈谈JS中的正则表达式
2017/09/11 Javascript
webpack多入口文件页面打包配置详解
2018/01/09 Javascript
Vue多种方法实现表头和首列固定的示例代码
2018/02/02 Javascript
详解js中Array的方法及技巧
2018/09/12 Javascript
Vue一个案例引发的递归组件的使用详解
2018/11/15 Javascript
JS实现求字符串中出现最多次数的字符和次数示例
2019/07/05 Javascript
electron+vue实现div contenteditable截图功能
2020/01/07 Javascript
通过代码实例展示Python中列表生成式的用法
2015/03/31 Python
python如何获取服务器硬件信息
2017/05/11 Python
浅谈pycharm下找不到sqlalchemy的问题
2018/12/03 Python
python中logging模块的一些简单用法的使用
2019/02/22 Python
pandas数据处理进阶详解
2019/10/11 Python
通过Turtle库在Python中绘制一个鼠年福鼠
2020/02/03 Python
Python devel安装失败问题解决方案
2020/06/09 Python
video.js支持m3u8格式直播的实现示例
2020/05/20 HTML / CSS
MyHeritage美国:家族史研究和DNA测试的领先服务
2019/05/27 全球购物
2019年.net常见面试问题
2012/02/12 面试题
传播学毕业生求职信
2013/10/11 职场文书
工作表扬信的范文
2014/01/10 职场文书
会计专业自我评价
2014/02/12 职场文书
学习雷锋月活动总结
2014/07/03 职场文书
学生抄作业检讨书(2篇)
2014/10/17 职场文书
2014年妇女工作总结
2014/12/06 职场文书
初级职称评定工作总结
2015/08/13 职场文书
关于React Native使用axios进行网络请求的方法
2021/08/02 Javascript