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三元运算符实现方法
Dec 17 Python
Python实现的根据文件名查找数据文件功能示例
May 02 Python
django与小程序实现登录验证功能的示例代码
Feb 19 Python
python批量修改图片尺寸,并保存指定路径的实现方法
Jul 04 Python
python实现发送form-data数据的方法详解
Sep 27 Python
Python使用进程Process模块管理资源
Mar 05 Python
python def 定义函数,调用函数方式
Jun 02 Python
解决keras使用cov1D函数的输入问题
Jun 29 Python
Python实现加密的RAR文件解压的方法(密码已知)
Sep 11 Python
基于python+selenium自动健康打卡的实现代码
Jan 13 Python
Matplotlib绘制条形图的方法你知道吗
Mar 21 Python
Python绘制散乱的点构成的图的方法
Apr 21 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
长波有什么东西
2021/03/01 无线电
PHP.MVC的模板标签系统(二)
2006/09/05 PHP
PHP生成Flash动画的实现代码
2010/03/12 PHP
php实现监控varnish缓存服务器的状态
2014/12/30 PHP
php自定义函数实现汉字转换utf8编码的方法
2016/09/29 PHP
基于ThinkPHP实现的日历功能实例详解
2017/04/15 PHP
laravel admin实现分类树/模型树的示例代码
2020/06/10 PHP
extjs 为某个事件设置拦截器
2010/01/15 Javascript
Jquery Ajax学习实例5 向WebService发出请求,返回泛型集合数据的异步调用
2010/03/17 Javascript
Extjs gridpanel 出现横向滚动条问题的解决方法
2011/07/04 Javascript
JQuery插件Style定制化方法的分析与比较
2012/05/03 Javascript
nodejs之请求路由概述
2014/07/05 NodeJs
jquery果冻抖动效果实现方法
2015/01/15 Javascript
javascript常用函数(2)
2015/11/05 Javascript
Bootstrap选项卡动态切换效果
2016/11/28 Javascript
浅谈Vue.js
2017/03/02 Javascript
React进阶学习之组件的解耦之道
2017/08/07 Javascript
Angular使用Md5加密的解决方法
2017/09/16 Javascript
vuex中使用对象展开运算符的示例
2017/09/25 Javascript
vue给input file绑定函数获取当前上传的对象完美实现方法
2017/12/15 Javascript
JS实现网页烟花动画效果
2020/03/10 Javascript
vuex实现购物车功能
2020/06/28 Javascript
python将xml xsl文件生成html文件存储示例讲解
2013/12/03 Python
Python 多进程和数据传递的理解
2017/10/09 Python
python使用Matplotlib画饼图
2018/09/25 Python
pyqt5 QProgressBar清空进度条的实例
2019/06/21 Python
Python切图九宫格的实现方法
2019/10/10 Python
pytorch  网络参数 weight bias 初始化详解
2020/06/24 Python
python3排序的实例方法
2020/10/20 Python
激光脱毛、蓝光和护肤:Tria Beauty
2019/03/28 全球购物
会计自荐书
2013/12/02 职场文书
优秀班集体事迹材料
2014/12/25 职场文书
2015年消费者权益日活动总结
2015/02/09 职场文书
计算机专业自荐信
2015/03/05 职场文书
2015年度内部审计工作总结
2015/05/20 职场文书
Nginx文件已经存在全局反向代理问题排查记录
2022/07/15 Servers