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的爬虫框架scrapy用21行代码写一个爬虫
Apr 24 Python
Python数据结构与算法之图的广度优先与深度优先搜索算法示例
Dec 14 Python
Python中sort和sorted函数代码解析
Jan 25 Python
python pandas 对时间序列文件处理的实例
Jun 22 Python
python调用tcpdump抓包过滤的方法
Jul 18 Python
PyQt5实现简易电子词典
Jun 25 Python
搭建python django虚拟环境完整步骤详解
Jul 08 Python
django框架CSRF防护原理与用法分析
Jul 22 Python
Python列表元素常见操作简单示例
Oct 25 Python
Python安装第三方库攻略(pip和Anaconda)
Oct 15 Python
Python+Matplotlib+LaTeX玩转数学公式
Feb 24 Python
Python实现抖音热搜定时爬取功能
Mar 16 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验证码(支持中文)
2007/02/14 PHP
php利用header函数实现文件下载时直接提示保存
2009/11/12 PHP
php file_exists 检查文件或目录是否存在的函数
2010/05/10 PHP
使用新的消息弹出框blackbirdjs
2008/10/16 Javascript
js jquery获取随机生成id的服务器控件的三种方法
2013/07/11 Javascript
原生JS可拖动弹窗效果实例代码
2013/11/09 Javascript
一款由jquery实现的整屏切换特效
2014/09/15 Javascript
PHP和NodeJs开发的应用如何共用Session
2015/04/16 NodeJs
jquery ui resize 中border-box的bug修正
2015/04/26 Javascript
JS右下角广告窗口代码(可收缩、展开及关闭)
2015/09/04 Javascript
JavaScript编程中window的location与history对象详解
2015/10/26 Javascript
JavaScript中文件上传API详解
2016/04/01 Javascript
JQuery实现列表中复选框全选反选功能封装(推荐)
2016/11/24 Javascript
浅谈jquery拼接字符串效率比较高的方法
2017/02/22 Javascript
详解Vue组件实现tips的总结
2017/11/01 Javascript
jQuery层叠选择器用法实例分析
2019/06/28 jQuery
Element Backtop回到顶部的具体使用
2020/07/27 Javascript
[04:32]玩具屠夫中文语音节选
2020/08/23 DOTA
python实现异步回调机制代码分享
2014/01/10 Python
Python实现约瑟夫环问题的方法
2016/05/03 Python
python 接收处理外带的参数方法
2018/12/03 Python
对Python中一维向量和一维向量转置相乘的方法详解
2019/08/26 Python
python文件读取失败怎么处理
2020/06/23 Python
澳大利亚巧克力花束和礼品网站:Tastebuds
2019/03/15 全球购物
澳大利亚最大的在线美发和美容零售商之一:My Hair Care & Beauty
2019/08/24 全球购物
平面设计岗位职责
2013/12/14 职场文书
情人节活动策划方案
2014/02/27 职场文书
设计大赛策划方案
2014/06/13 职场文书
中学生社区服务活动报告
2015/02/05 职场文书
辣妈辣妹观后感
2015/06/10 职场文书
红歌会主持词
2015/07/02 职场文书
2016年小学植树节活动总结
2016/03/16 职场文书
如何计划开一家便利店?
2019/07/31 职场文书
Html5通过数据流方式播放视频的实现
2021/04/27 HTML / CSS
深入理解redis中multi与pipeline
2021/06/02 Redis
用 Python 定义 Schema 并生成 Parquet 文件详情
2021/09/25 Python