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安装mysql-python简明笔记(ubuntu环境)
Jun 25 Python
动感网页相册 python编写简单文件夹内图片浏览工具
Aug 17 Python
import的本质解析
Oct 30 Python
Python网络编程之TCP与UDP协议套接字用法示例
Feb 02 Python
深入理解Python中的 __new__ 和 __init__及区别介绍
Sep 17 Python
numpy给array增加维度np.newaxis的实例
Nov 01 Python
pandas 时间格式转换的实现
Jul 06 Python
Python django搭建layui提交表单,表格,图标的实例
Nov 18 Python
Python 限定函数参数的类型及默认值方式
Dec 24 Python
详解有关PyCharm安装库失败的问题的解决方法
Feb 02 Python
vscode配置anaconda3的方法步骤
Aug 08 Python
Qt自定义Plot实现曲线绘制的详细过程
Nov 02 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
Zend引擎的发展 [15]
2006/10/09 PHP
php at(@)符号的用法简介
2009/07/11 PHP
约瑟夫环问题的PHP实现 使用PHP数组内部指针操作函数
2010/10/12 PHP
php生成局部唯一识别码LUID的代码
2012/10/06 PHP
PHP中redis的用法深入解析
2014/02/20 PHP
用PHP代替JS玩转DOM的思路及示例代码
2014/06/15 PHP
jquery select(列表)的操作(取值/赋值)
2009/08/06 Javascript
理解Javascript_03_javascript全局观
2010/10/11 Javascript
jquery使用淘宝接口跨域查询手机号码归属地实例
2013/11/28 Javascript
jquery访问ashx文件示例代码
2014/08/11 Javascript
jQuery实现倒计时按钮功能代码分享
2014/09/03 Javascript
node.js入门实例helloworld详解
2015/12/23 Javascript
详解javascript中对数据格式化的思考
2017/01/23 Javascript
angular6.x中ngTemplateOutlet指令的使用示例
2018/08/09 Javascript
JavaScript文本特效实例小结【3个示例】
2018/12/22 Javascript
微信小程序从注册账号到上架(图文详解)
2019/07/17 Javascript
浅谈webpack和webpack-cli模块源码分析
2020/01/19 Javascript
原生js实现无缝轮播图效果
2021/01/28 Javascript
[34:44]Liquid vs TNC Supermajor 胜者组 BO3 第二场 6.4
2018/06/05 DOTA
Python交换变量
2008/09/06 Python
Python中itertools模块用法详解
2014/09/25 Python
状态机的概念和在Python下使用状态机的教程
2015/04/11 Python
Python音频操作工具PyAudio上手教程详解
2019/06/26 Python
Jacobi迭代算法的Python实现详解
2019/06/29 Python
Python 使用xlwt模块将多行多列数据循环写入excel文档的操作
2020/11/10 Python
python读取excel数据并且画图的实现示例
2021/02/08 Python
Python之qq自动发消息的示例代码
2021/02/18 Python
html通过canvas转成base64的方法
2019/07/18 HTML / CSS
德国运动营养和健身网上商店:Myprotein.de
2018/07/18 全球购物
大一新生军训时的自我评价分享
2013/12/05 职场文书
集团公司总经理岗位职责
2013/12/20 职场文书
公司庆典邀请函范文
2014/01/13 职场文书
学校综治宣传月活动总结
2014/07/02 职场文书
运动会入场词
2015/07/18 职场文书
导游词之珠海轮廓
2019/10/25 职场文书
python对文档中元素删除,替换操作
2022/04/02 Python