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转换HTML到Text纯文本的方法
Jan 15 Python
Python实现的数据结构与算法之链表详解
Apr 22 Python
浅谈关于Python3中venv虚拟环境
Aug 01 Python
浅谈Python的list中的选取范围
Nov 12 Python
flask-restful使用总结
Dec 04 Python
python3.6使用urllib完成下载的实例
Dec 19 Python
python全栈知识点总结
Jul 01 Python
python实现登录密码重置简易操作代码
Aug 14 Python
Python队列、进程间通信、线程案例
Oct 25 Python
python处理写入数据代码讲解
Oct 22 Python
python爬虫 requests-html的使用
Nov 30 Python
Python使用openpyxl复制整张sheet
Mar 24 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
PHP常用代码
2006/11/23 PHP
在普通HTTP上安全地传输密码
2007/07/21 PHP
CI框架中redis缓存相关操作文件示例代码
2016/05/17 PHP
php连接oracle数据库的方法(测试成功)
2016/05/26 PHP
php版微信自动登录并获取昵称的方法
2016/09/23 PHP
Yii2实现多域名跨域同步登录退出
2017/02/04 PHP
laravel 数据迁移与 Eloquent ORM的实现方法
2019/04/12 PHP
PHP7 错误处理机制修改
2021/03/09 PHP
Javascript开发包大全整理
2006/12/22 Javascript
JS解密入门之凭直觉解
2008/06/25 Javascript
jQuery插件 tabBox实现代码
2010/02/09 Javascript
使用非html5实现js板连连看游戏示例代码
2013/09/22 Javascript
ie浏览器使用js导出网页到excel并打印
2014/03/11 Javascript
js 数组去重的四种实用方法
2014/09/09 Javascript
jQuery绑定事件-多种实现方式总结
2016/05/09 Javascript
浅谈EasyUi ComBotree树修改 父节点选择的问题
2016/11/07 Javascript
详解JS中遍历语法的比较
2017/04/07 Javascript
详解 vue better-scroll滚动插件排坑
2018/02/08 Javascript
nodejs实现的http、https 请求封装操作示例
2020/02/06 NodeJs
[48:00]EG vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.26
2018/08/29 DOTA
详解Python中expandtabs()方法的使用
2015/05/18 Python
python实现多线程的两种方式
2016/05/22 Python
Python字典简介以及用法详解
2016/11/15 Python
pandas数据清洗,排序,索引设置,数据选取方法
2018/05/18 Python
详谈Pandas中iloc和loc以及ix的区别
2018/06/08 Python
Python运维开发之psutil库的使用详解
2018/10/18 Python
python字典的setdefault的巧妙用法
2019/08/07 Python
Python log模块logging记录打印用法解析
2020/01/20 Python
Python sql注入 过滤字符串的非法字符实例
2020/04/03 Python
Python的in,is和id函数代码实例
2020/04/18 Python
详解Html5微信支付爬坑之路
2018/07/24 HTML / CSS
彪马美国官网:PUMA美国
2017/03/09 全球购物
吃空饷专项治理工作实施方案
2014/03/04 职场文书
超越自我演讲稿
2014/05/21 职场文书
租赁协议书
2015/01/27 职场文书
MySQL提升大量数据查询效率的优化神器
2022/07/07 MySQL