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数组条件过滤filter函数使用示例
Jul 22 Python
python实现比较两段文本不同之处的方法
May 30 Python
python+matplotlib绘制饼图散点图实例代码
Jan 20 Python
Python cookbook(数据结构与算法)实现对不原生支持比较操作的对象排序算法示例
Mar 15 Python
python用户评论标签匹配的解决方法
May 31 Python
django框架基于模板 生成 excel(xls) 文件操作示例
Jun 19 Python
Python使用pyserial进行串口通信的实例
Jul 02 Python
Python+OpenCv制作证件图片生成器的操作方法
Aug 21 Python
Python处理session的方法整理
Aug 29 Python
python字典和json.dumps()的遇到的坑分析
Mar 11 Python
python求前n个阶乘的和实例
Apr 02 Python
calendar在python3时间中常用函数举例详解
Nov 18 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静态调用非静态方法的应用分析
2013/05/02 PHP
php获得用户ip地址的比较不错的方法
2014/02/08 PHP
初学prototype,发个JS接受URL参数的代码
2006/09/25 Javascript
javascript中interval与setTimeOut的区别示例介绍
2014/03/14 Javascript
js文字横向滚动特效
2015/11/11 Javascript
[原创]javascript typeof id==='string'?document.getElementById(id):id解释
2016/11/02 Javascript
JS异步加载的三种实现方式
2017/03/16 Javascript
ES6字符串模板,剩余参数,默认参数功能与用法示例
2017/04/06 Javascript
vue 计时器组件的实现代码
2017/09/14 Javascript
Angular5.0 子组件通过service传递值给父组件的方法
2018/07/13 Javascript
Bootstrap模态对话框用法简单示例
2018/08/31 Javascript
angular6的响应式表单的实现
2018/10/10 Javascript
vue新建项目并配置标准路由过程解析
2019/12/09 Javascript
Python的另外几种语言实现
2015/01/29 Python
python 容器总结整理
2017/04/04 Python
python实现折半查找和归并排序算法
2017/04/14 Python
python批量查询、汉字去重处理CSV文件
2018/05/31 Python
python+pandas+时间、日期以及时间序列处理方法
2018/07/10 Python
Html5中的桌面通知Notification的实现
2018/09/25 HTML / CSS
html5 svg 中元素点击事件添加方法
2013/01/16 HTML / CSS
html5在移动端的屏幕适应问题示例探讨
2014/06/15 HTML / CSS
French Connection官网:女装、男装及家居用品
2019/03/18 全球购物
有趣、实用和鼓舞人心的产品:Inspire Uplift
2019/11/05 全球购物
员工自我鉴定
2013/10/09 职场文书
致跳高运动员广播稿
2014/01/13 职场文书
大型晚会策划方案
2014/02/06 职场文书
研修第一天随笔感言
2014/02/15 职场文书
大课间体育活动方案
2014/03/12 职场文书
2014年最新领导班子整改方案
2014/09/27 职场文书
2014法院四风问题对照检查材料思想汇报
2014/10/04 职场文书
杭白菊导游词
2015/02/10 职场文书
元宵节寄语大全
2015/02/27 职场文书
史上最牛的辞职信
2015/02/28 职场文书
同意报考公务员证明
2015/06/17 职场文书
解决Golang中ResponseWriter的一个坑
2021/04/27 Golang
JavaScript 反射学习技巧
2021/10/16 Javascript