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 相关文章推荐
python中OrderedDict的使用方法详解
May 05 Python
python如何让类支持比较运算
Mar 20 Python
python实现顺序表的简单代码
Sep 28 Python
让代码变得更易维护的7个Python库
Oct 09 Python
在pandas多重索引multiIndex中选定指定索引的行方法
Nov 16 Python
Python3爬虫全国地址信息
Jan 05 Python
python游戏地图最短路径求解
Jan 16 Python
Python面向对象程序设计多继承和多态用法示例
Apr 08 Python
python自动化实现登录获取图片验证码功能
Nov 20 Python
利用setuptools打包python程序的方法步骤
Jan 18 Python
Python PyPDF2模块安装使用解析
Jan 19 Python
keras Lambda自定义层实现数据的切片方式,Lambda传参数
Jun 11 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
我常用的几个类
2006/10/09 PHP
PHP中file_exists与is_file,is_dir的区别介绍
2012/09/12 PHP
php版微信公众平台开发之验证步骤实例详解
2016/09/23 PHP
用javascript实现给图片加链接
2007/08/15 Javascript
javascript获取当前日期时间及其它操作函数
2011/01/11 Javascript
js解析与序列化json数据(三)json的解析探讨
2013/02/01 Javascript
JavaScript实现页面实时显示当前时间的简单实例
2013/07/20 Javascript
jQuery过滤选择器:not()方法使用介绍
2014/04/20 Javascript
jQuery多条件筛选如何实现
2015/11/04 Javascript
js多功能分页组件layPage使用方法详解
2016/05/19 Javascript
js和jquery中获取非行间样式
2017/05/05 jQuery
微信小程序页面滑动屏幕加载数据效果
2020/11/16 Javascript
基于three.js编写的一个项目类示例代码
2018/01/05 Javascript
JavaScript事件对象深入详解
2018/12/30 Javascript
JavaScript实现动态添加、移除元素或属性的方法分析
2019/01/03 Javascript
微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖)
2019/09/19 Javascript
vue+element搭建后台小总结 el-dropdown下拉功能
2020/04/10 Javascript
基于node+websocket+html实现腾讯课堂聊天室聊天功能
2020/03/04 Javascript
Nodejs文件上传、监听上传进度的代码
2020/03/27 NodeJs
js实现滑动滑块验证登录
2020/07/24 Javascript
vue实现把接口单独存放在一个文件方式
2020/08/13 Javascript
[03:08]迎霜节狂欢!2018年迎霜节珍藏Ⅰ一览
2018/12/25 DOTA
使用python实现strcmp函数功能示例
2014/03/25 Python
python批量修改图片后缀的方法(png到jpg)
2018/10/25 Python
vscode调试django项目的方法
2020/08/06 Python
解决Pyinstaller打包软件失败的一个坑
2021/03/04 Python
美国汽车轮胎和轮毂销售网站:Tire Rack
2018/01/11 全球购物
如何在.net Winform里面显示PDF文档
2012/09/11 面试题
个人简历中的自我评价范例
2013/10/29 职场文书
解除劳动合同协议书范本
2014/04/14 职场文书
董事长助理工作职责
2014/06/08 职场文书
应届大专生求职信
2014/06/26 职场文书
教师个人自我剖析材料
2014/09/29 职场文书
营销经理工作检讨书
2014/11/03 职场文书
就业导师推荐信范文
2015/03/27 职场文书
Redis遍历所有key的两个命令(KEYS 和 SCAN)
2021/04/12 Redis