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获得图片base64编码示例
Jan 16 Python
python打开网页和暂停实例
Sep 30 Python
解析Python中的生成器及其与迭代器的差异
Jun 20 Python
python3实现163邮箱SMTP发送邮件
May 22 Python
修复 Django migration 时遇到的问题解决
Jun 14 Python
Python使用ConfigParser模块操作配置文件的方法
Jun 29 Python
简单了解django索引的相关知识
Jul 17 Python
解决Tensorflow 内存泄露问题
Feb 05 Python
python中opencv实现图片文本倾斜校正
Jun 11 Python
Python爬虫基础之简单说一下scrapy的框架结构
Jun 26 Python
python playwright 自动等待和断言详解
Nov 27 Python
python 判断字符串当中是否包含字符(str.contain)
Jun 01 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关联数组使用技巧
2015/12/25 PHP
对于Laravel 5.5核心架构的深入理解
2018/02/22 PHP
jquery选择器之内容过滤选择器详解
2014/01/27 Javascript
浅谈javascript中createElement事件
2014/12/05 Javascript
由浅入深讲解Javascript继承机制与simple-inheritance源码分析
2015/12/13 Javascript
详解Webwork中Action 调用的方法
2016/02/02 Javascript
JS使用eval()动态创建变量的方法
2016/06/03 Javascript
JS实现列表的响应式排版(推荐)
2016/09/01 Javascript
javascript入门之数组[新手必看]
2016/11/21 Javascript
微信小程序 UI布局常用技巧整理总结
2016/12/05 Javascript
Node.js使用Angular简单示例
2018/05/11 Javascript
js实现鼠标点击页面弹出自定义文字效果
2019/12/24 Javascript
Openlayers学习之地图比例尺控件
2020/09/28 Javascript
微信小程序实现分页加载效果
2020/11/19 Javascript
Python实现字符串逆序输出功能示例
2017/06/24 Python
django用户注册、登录、注销和用户扩展的示例
2018/03/19 Python
python中append实例用法总结
2019/07/30 Python
Python队列、进程间通信、线程案例
2019/10/25 Python
详解Python直接赋值,深拷贝和浅拷贝
2020/07/09 Python
python中HTMLParser模块知识点总结
2021/01/25 Python
HTML5自定义data-* data(obj)属性和jquery的data()方法的使用
2012/12/13 HTML / CSS
Ted Baker英国官网:男士和女士服装及配件
2017/03/13 全球购物
Sunglasses Shop英国:欧洲领先的太阳镜在线供应商之一
2018/09/19 全球购物
沃尔玛加拿大:Walmart.ca
2020/03/02 全球购物
教师自我评价范文
2013/12/16 职场文书
模具数控专业自荐信
2014/01/27 职场文书
运动会通讯稿300字
2014/02/02 职场文书
小学生检讨书大全
2014/02/06 职场文书
《桥》教学反思
2014/04/09 职场文书
模具专业自荐信
2014/05/29 职场文书
小学大队委竞选口号
2015/12/25 职场文书
粗暴解决CUDA out of memory的问题
2021/05/22 Python
变长双向rnn的正确使用姿势教学
2021/05/31 Python
pytorch中的 .view()函数的用法介绍
2022/03/17 Python
Mysql调整优化之四种分区方式以及组合分区
2022/04/13 MySQL
Java实现添加条码或二维码到Word文档
2022/06/01 Java/Android