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 thread 并发且顺序运行示例
Apr 09 Python
python判断、获取一张图片主色调的2个实例
Apr 10 Python
利用Python的Flask框架来构建一个简单的数字商品支付解决方案
Mar 31 Python
在Python中处理XML的教程
Apr 29 Python
用Python解决计数原理问题的方法
Aug 04 Python
python字典多键值及重复键值的使用方法(详解)
Oct 31 Python
Python切片操作深入详解
Jul 27 Python
python机器学习之神经网络实现
Oct 13 Python
实例讲解Python中浮点型的基本内容
Feb 11 Python
Python CSV文件模块的使用案例分析
Dec 21 Python
python3实现raspberry pi(树莓派)4驱小车控制程序
Feb 12 Python
设置jupyter中DataFrame的显示限制方式
Apr 12 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中基本符号及使用方法
2010/03/23 PHP
ThinkPHP自动验证失败的解决方法
2011/06/09 PHP
如何在PHP中使用正则表达式进行查找替换
2013/06/13 PHP
ThinkPHP3.1新特性之对分组支持的改进与完善概述
2014/06/19 PHP
php中 $$str 中 &quot;$$&quot; 的详解
2015/07/06 PHP
CodeIgniter整合Smarty的方法详解
2017/08/25 PHP
PHP钩子实现方法解析
2019/05/21 PHP
php扩展开发入门demo示例
2019/09/23 PHP
将中国标准时间转换成标准格式的代码
2014/03/20 Javascript
使用jQuery和Bootstrap实现多层、自适应模态窗口
2014/12/22 Javascript
JavaScript中string对象
2015/06/12 Javascript
实例讲解javascript注册事件处理函数
2016/01/09 Javascript
Jquery实现纵向横向菜单
2016/01/24 Javascript
jQuery.deferred对象使用详解
2016/03/18 Javascript
Form表单按回车自动提交表单的实现方法
2016/11/18 Javascript
jquery拖动改变div大小
2017/07/04 jQuery
微信小程序实现点击生成随机验证码
2020/09/09 Javascript
详解阿里Node.js技术文档之process模块学习指南
2021/01/04 Javascript
关于Js中new操作符的作用详解
2021/02/21 Javascript
[01:29]2014DOTA2展望TI 剑指西雅图DK战队专访
2014/06/30 DOTA
Python常用正则表达式符号浅析
2014/08/13 Python
简单介绍Python的Django框架的dj-scaffold项目
2015/05/30 Python
python 实现一个贴吧图片爬虫的示例
2017/10/12 Python
numpy.delete删除一列或多列的方法
2018/04/03 Python
基于python实现KNN分类算法
2020/04/23 Python
详解python--模拟轮盘抽奖游戏
2019/04/12 Python
使用python制作游戏下载进度条的代码(程序说明见注释)
2019/10/24 Python
numpy数组做图片拼接的实现(concatenate、vstack、hstack)
2019/11/08 Python
python 异步async库的使用说明
2020/05/04 Python
建设单位项目负责人任命书
2014/06/06 职场文书
2014年驻村干部工作总结
2014/11/17 职场文书
干部考核工作总结
2015/08/12 职场文书
2015年度个人工作总结报告
2015/10/24 职场文书
初中班长竞选稿
2015/11/20 职场文书
情况说明书格式及范文
2019/06/24 职场文书
pytorch中[..., 0]的用法说明
2021/05/20 Python