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获取文件版本信息、公司名和产品名的方法
Oct 05 Python
《Python之禅》中对于Python编程过程中的一些建议
Apr 03 Python
Python函数的周期性执行实现方法
Aug 13 Python
python基础之入门必看操作
Jul 26 Python
Python中实现switch功能实例解析
Jan 11 Python
Python实现获取nginx服务器ip及流量统计信息功能示例
May 18 Python
几个适合python初学者的简单小程序,看完受益匪浅!(推荐)
Apr 16 Python
用python爬取历史天气数据的方法示例
Dec 30 Python
解决Python数据可视化中文部分显示方块问题
May 16 Python
使用Keras建立模型并训练等一系列操作方式
Jul 02 Python
python 爬虫基本使用——统计杭电oj题目正确率并排序
Oct 26 Python
Python 使用dict实现switch的操作
Apr 07 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
二十行语句实现从Excel到mysql的转化
2006/10/09 PHP
IIS+PHP+MySQL+Zend配置 (视频教程)
2006/12/13 PHP
Discuz 6.0+ 批量注册用户名
2009/09/13 PHP
zend framework配置操作数据库实例分析
2012/12/06 PHP
php比较两个绝对时间的大小
2014/01/31 PHP
PHP学习笔记(二) 了解PHP的基本语法以及目录结构
2014/08/04 PHP
Symfony2实现在controller中获取url的方法
2016/03/18 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
escape函数解决js中ajax传递中文出现乱码问题
2014/10/30 Javascript
JQuery中serialize() 序列化
2015/03/13 Javascript
JS获取短信验证码倒计时的实现代码
2017/05/22 Javascript
浅谈SpringMVC中post checkbox 多选框value的值(隐藏域方式)
2018/01/08 Javascript
Vue中使用ElementUI使用第三方图标库iconfont的示例
2018/10/11 Javascript
JavaScript显式数据类型转换详解
2019/03/18 Javascript
实例详解带参数的 npm script
2019/05/28 Javascript
用js编写留言板
2020/03/17 Javascript
python正则表达式去掉数字中的逗号(python正则匹配逗号)
2013/12/25 Python
Python实现的NN神经网络算法完整示例
2018/06/19 Python
超实用的 30 段 Python 案例
2019/10/10 Python
python运用pygame库实现双人弹球小游戏
2019/11/25 Python
Python实现密码薄文件读写操作
2019/12/16 Python
详解python UDP 编程
2020/08/24 Python
使用HTML5技术开发一个属于自己的超酷颜色选择器
2013/09/22 HTML / CSS
英国领先的酒杯和水晶玻璃器皿制造商:Dartington Crystal
2019/06/23 全球购物
维多利亚的秘密阿联酋官网:Victoria’s Secret阿联酋
2019/12/07 全球购物
澳大利亚手袋、珠宝和在线时尚精品店:The Way
2019/12/21 全球购物
客服文员岗位职责
2013/11/29 职场文书
学习雷锋精神心得体会范文
2014/03/12 职场文书
房地产营销活动策划方案
2014/09/15 职场文书
现实表现材料范文
2014/12/23 职场文书
个人廉政承诺书
2015/04/28 职场文书
遗嘱范文
2015/08/07 职场文书
2016年党建工作简报
2015/11/26 职场文书
禁毒心得体会范文
2016/01/15 职场文书
Nginx配置SSL证书出错解决方案
2021/03/31 Servers
Spring 使用注解开发
2022/05/20 Java/Android