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基于pygame实现的font游戏字体(附源码)
Nov 11 Python
Python学习小技巧之列表项的拼接
May 20 Python
tensorflow1.0学习之模型的保存与恢复(Saver)
Apr 23 Python
Flask框架使用DBUtils模块连接数据库操作示例
Jul 20 Python
深入浅析Python2.x和3.x版本的主要区别
Nov 30 Python
python实现对输入的密文加密
Mar 20 Python
浅析pandas 数据结构中的DataFrame
Oct 12 Python
python 求定积分和不定积分示例
Nov 20 Python
Python如何使用Gitlab API实现批量的合并分支
Nov 27 Python
Python字符串split及rsplit方法原理详解
Jun 29 Python
python import 上级目录的导入
Nov 03 Python
解决Pyinstaller打包软件失败的一个坑
Mar 04 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 Smarty 字符比较代码
2011/02/27 PHP
Yii框架参数配置文件params用法实例分析
2019/09/11 PHP
javascript实现的在当前窗口中漂浮框的代码
2010/03/15 Javascript
入门基础学习 ExtJS笔记(一)
2010/11/11 Javascript
Javascript延迟执行实现方法(setTimeout)
2010/12/30 Javascript
jQuery蓝色风格滑动导航栏代码分享
2015/08/19 Javascript
基于jQuery+PHP+Mysql实现在线拍照和在线浏览照片
2015/09/06 Javascript
Node.js与MySQL交互操作及其注意事项
2016/10/05 Javascript
AngularJS入门教程之路由机制ngRoute实例分析
2016/12/13 Javascript
Vue2.0 从零开始_环境搭建操作步骤
2017/06/14 Javascript
webpack开发跨域问题解决办法
2017/08/03 Javascript
JavaScript类的继承多种实现方法
2020/05/30 Javascript
JS自定义右键菜单实现代码解析
2020/07/16 Javascript
python验证码识别教程之灰度处理、二值化、降噪与tesserocr识别
2018/06/04 Python
python绘制雪景图
2019/12/16 Python
详解python中各种文件打开模式
2020/01/19 Python
tensorflow之自定义神经网络层实例
2020/02/07 Python
TensorFlow获取加载模型中的全部张量名称代码
2020/02/11 Python
如何基于python把文字图片写入word文档
2020/07/31 Python
深入浅析CSS3中的Flex布局整理
2020/04/27 HTML / CSS
深入剖析webstorage[html5的本地数据处理]
2016/07/11 HTML / CSS
你不知道的5个HTML5新功能
2016/06/28 HTML / CSS
html5基础教程常用技巧整理
2013/08/20 HTML / CSS
HTML5 body设置自适应全屏
2020/05/07 HTML / CSS
草莓网化妆品日本站:Strawberrynet日本
2017/10/20 全球购物
几道Web/Ajax的面试题
2016/11/05 面试题
Ajax主要包含了哪些技术
2014/06/12 面试题
办公室内勤工作职责
2013/12/11 职场文书
学习十八大精神心得体会
2013/12/31 职场文书
违反学校规定检讨书
2014/01/18 职场文书
大学生安全责任书
2014/07/25 职场文书
医院护士党的群众路线教育实践活动对照检查材料思想汇报
2014/10/04 职场文书
学校少先队工作总结
2015/08/12 职场文书
四年级数学教学反思
2016/02/16 职场文书
责任书格式
2019/04/18 职场文书
SpringBoot 拦截器妙用你真的了解吗
2021/07/01 Java/Android