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将html转成PDF的实现代码(包含中文)
Mar 04 Python
python 简单备份文件脚本v1.0的实例
Nov 06 Python
Django数据库表反向生成实例解析
Feb 06 Python
Python多进程池 multiprocessing Pool用法示例
Sep 07 Python
python从list列表中选出一个数和其对应的坐标方法
Jul 20 Python
详解如何在cmd命令窗口中搭建简单的python开发环境
Aug 29 Python
原来我一直安装 Python 库的姿势都不对呀
Nov 11 Python
python通过链接抓取网站详解
Nov 20 Python
PyQt5实现登录页面
May 30 Python
python利用paramiko实现交换机巡检的示例
Sep 22 Python
Django中的JWT身份验证的实现
May 07 Python
如何正确理解python装饰器
Jun 15 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代码
2012/06/08 PHP
基于php中使用excel的简单介绍
2013/08/02 PHP
php获取访问者IP地址汇总
2015/04/24 PHP
Yii的Srbac插件用法详解
2016/07/14 PHP
PHP生成(支持多模板)二维码海报代码
2018/04/30 PHP
js小技巧--自动隐藏红叉叉
2007/08/13 Javascript
JQuery 获取和设置Select选项的代码
2010/02/07 Javascript
javascript是怎么继承的介绍
2012/01/05 Javascript
jQuery动态修改超链接地址的方法
2015/02/13 Javascript
javascript实现动态改变层大小的方法
2015/05/14 Javascript
JavaScript中constructor()方法的使用简介
2015/06/05 Javascript
js倒计时简单实现方法
2015/12/17 Javascript
原生JS实现-星级评分系统的简单实例
2016/08/21 Javascript
微信小程序 for 循环详解
2016/10/09 Javascript
JS+HTML5 FileReader对象用法示例
2017/04/07 Javascript
vue组件中点击按钮后修改输入框的状态实例代码
2017/04/14 Javascript
Vue项目全局配置微信分享思路详解
2018/05/04 Javascript
JavaScript实现的DOM树遍历方法详解【二叉DOM树、多叉DOM树】
2018/05/07 Javascript
angular的输入和输出的使用方法
2018/09/22 Javascript
JS实现盒子跟着鼠标移动及键盘方向键控制盒子移动效果示例
2019/01/29 Javascript
python执行等待程序直到第二天零点的方法
2015/04/23 Python
python使用PIL模块实现给图片打水印的方法
2015/05/22 Python
Python 统计字数的思路详解
2018/05/08 Python
Python之文字转图片方法
2018/05/10 Python
python 剪切移动文件的实现代码
2018/08/02 Python
python单线程文件传输的实例(C/S)
2019/02/13 Python
python实现按首字母分类查找功能
2019/10/31 Python
什么是python的id函数
2020/06/11 Python
实例讲解使用SVG制作loading加载动画的方法
2016/04/05 HTML / CSS
丝芙兰波兰:Sephora.pl
2018/03/25 全球购物
Can a struct inherit from another struct? (结构体能继承结构体吗)
2016/09/25 面试题
会计电算化个人自我评价
2013/11/17 职场文书
自主招生自荐信指南
2014/02/04 职场文书
文明寝室申报材料
2014/05/12 职场文书
国际语言毕业生求职信
2014/07/08 职场文书
郭明义电影观后感
2015/06/08 职场文书