转载于:http://blog.csdn.net/dongnanyanhai/article/details/5552431

首先推荐一个网站:中医世家,这个网站上有很多关于中医的资料,光是提供的中医书籍就有317Mb,全都是CHM格式,资料非常全面。
  正因为这个网站有这么多的好东西,但是我又懒得一本书一本书的下载,所以,我就……用Python直接解析了几个书籍下载页面的地址,把所有的书籍的下载地址都弄到手,顺便还下载了,呵呵呵,省得一个页面一个页面的打开!
 

#!/usr/bin/env python
#coding=utf-8
#这段代码是用来下载“中医世家”网站上的书籍的,很不好意思了!
import urllib2,urllib,os
from BeautifulSoup import BeautifulSoup
#定义书籍链接列表
mainbooklink = ["http://www.zysj.com.cn/lilunshuji/1index.html",
"http://www.zysj.com.cn/lilunshuji/5index.html",
"http://www.zysj.com.cn/lilunshuji/20index.html",
"http://www.zysj.com.cn/lilunshuji/25index.html"]
bookdir = [u"d://book//中医教材//",u"d://book//中医著作//",u"d://book//实用手册//",
u"d://book//西医备考//"]
chmname = [] #chm电子书中文名字
chmbooklink = [] #对应chm的下载地址
#该函数实现获取一个地址后马上下载该书籍
def getbooklink(url):
#检测url地址——暂时略了! #获取url地址的网页,并使用BeautifulSoup进行解析
page = urllib2.urlopen(url)
soup = BeautifulSoup(page) #处理url,取得其前部地址,用以确定下面得到的地址的完全地址
#urllen = len(url) for i in soup('li'):
#print i.a.string.encode('gb2312'),i.a['href']
chmfilename = i.a.string
bookfilelink = "http://www.zysj.com.cn"+i.a['href'] page = urllib2.urlopen(bookfilelink)
soup =BeautifulSoup(page)
ti = u"下载电子书:"+chmfilename+".chm"
for k in soup('a',title = ti):
chmname.append(chmfilename+'.chm')
downlink = "http://www.zysj.com.cn"+k['href']
chmbooklink.append(downlink)
print chmfilename.encode('gb2312')+'.chm',downlink
def downbook(filename,url,dirn):
#urllib.urlretrieve(url, filename)
if not os.path.exists(bookdir(dirn)):
os.makedirs(bookdir(dirn)) print "开始下载:".decode('utf-8').encode('gb2312'),filename.encode('gb2312')
filename = bookdir[dirn]+filename
urllib.urlretrieve(url,filename)
print "下载完成!".decode('utf-8').encode('gb2312') if __name__=="__main__":
dirn = 0
for i in mainbooklink:
getbooklink(i)
for j in range(0,len(chmname)):
downbook(chmname[j],chmbooklink[j],dirn)
chmname = []
chmbooklink = []
dirn = dirn+1 """
这一小段代码是用来学习查找字符串里面出现的某个字符的呃位置,我把所有的位置都取出来了,接下来想怎样就能怎样了!
a ="http://www.zysj.com.cn/lilunshuji/1index.html"
b = 0
c = len(a)
while 1:
b = a.find('/',b,c)
print b
b = b + 1
if b == 0:
break
"""

这段代码中缺了对空格的检测,所以好几部关于中医的字典是没有被解析出来的,只能手工下了,不多!

python爬虫实战1的更多相关文章

  1. 【图文详解】python爬虫实战——5分钟做个图片自动下载器

    python爬虫实战——图片自动下载器 之前介绍了那么多基本知识[Python爬虫]入门知识,(没看的先去看!!)大家也估计手痒了.想要实际做个小东西来看看,毕竟: talk is cheap sho ...

  2. Python爬虫实战(4):豆瓣小组话题数据采集—动态网页

    1, 引言 注释:上一篇<Python爬虫实战(3):安居客房产经纪人信息采集>,访问的网页是静态网页,有朋友模仿那个实战来采集动态加载豆瓣小组的网页,结果不成功.本篇是针对动态网页的数据 ...

  3. Python爬虫实战(2):爬取京东商品列表

    1,引言 在上一篇<Python爬虫实战:爬取Drupal论坛帖子列表>,爬取了一个用Drupal做的论坛,是静态页面,抓取比较容易,即使直接解析html源文件都可以抓取到需要的内容.相反 ...

  4. Python爬虫实战四之抓取淘宝MM照片

    原文:Python爬虫实战四之抓取淘宝MM照片其实还有好多,大家可以看 Python爬虫学习系列教程 福利啊福利,本次为大家带来的项目是抓取淘宝MM照片并保存起来,大家有没有很激动呢? 本篇目标 1. ...

  5. Python爬虫实战---抓取图书馆借阅信息

    Python爬虫实战---抓取图书馆借阅信息 原创作品,引用请表明出处:Python爬虫实战---抓取图书馆借阅信息 前段时间在图书馆借了很多书,借得多了就容易忘记每本书的应还日期,老是担心自己会违约 ...

  6. Python爬虫实战七之计算大学本学期绩点

    大家好,本次为大家带来的项目是计算大学本学期绩点.首先说明的是,博主来自山东大学,有属于个人的学生成绩管理系统,需要学号密码才可以登录,不过可能广大读者没有这个学号密码,不能实际进行操作,所以最主要的 ...

  7. Python爬虫实战八之利用Selenium抓取淘宝匿名旺旺

    更新 其实本文的初衷是为了获取淘宝的非匿名旺旺,在淘宝详情页的最下方有相关评论,含有非匿名旺旺号,快一年了淘宝都没有修复这个. 可就在今天,淘宝把所有的账号设置成了匿名显示,SO,获取非匿名旺旺号已经 ...

  8. Python爬虫实战六之抓取爱问知识人问题并保存至数据库

    大家好,本次为大家带来的是抓取爱问知识人的问题并将问题和答案保存到数据库的方法,涉及的内容包括: Urllib的用法及异常处理 Beautiful Soup的简单应用 MySQLdb的基础用法 正则表 ...

  9. Python爬虫实战五之模拟登录淘宝并获取所有订单

    经过多次尝试,模拟登录淘宝终于成功了,实在是不容易,淘宝的登录加密和验证太复杂了,煞费苦心,在此写出来和大家一起分享,希望大家支持. 温馨提示 更新时间,2016-02-01,现在淘宝换成了滑块验证了 ...

  10. Python爬虫实战三之实现山东大学无线网络掉线自动重连

    综述 最近山大软件园校区QLSC_STU无线网掉线掉的厉害,连上之后平均十分钟左右掉线一次,很是让人心烦,还能不能愉快地上自习了?能忍吗?反正我是不能忍了,嗯,自己动手,丰衣足食!写个程序解决掉它! ...

随机推荐

  1. 飘逸的python - 用urlparse从url中抽离出想要的信息

    最近有个需求,要检测配置中的那些url的域名是否都正常,即是否都能ping通. 不过配置中url格式是这样的 http://www.something.com:1234/ . 要ping的是www.s ...

  2. 在windows下完美安装GitHub

    笔者最近在Windows下安装GitHub,过程中遇到不少问题.现在把安装的详细步骤分享给大家,免得大家走弯路. 笔者安装了GitHub for Windows程序,一切都运行顺利.但事情没有结束,首 ...

  3. 虎说:bootstrap源码解读(重置模块)

    ------<!--action-->------ 开场show:前不生“不犹豫”,后半生“不后悔”.今天又逃课,我不后悔 素材:推特公司的前端框架bootstrap(下称bt),解读源码 ...

  4. java list基本用法

    List<E>([]内的内容可省略),与数组类似: 实例化:List[<数据类型>] list = new ArrayList[<数据类型>](); 获得集合内元素 ...

  5. CSS Select 标签取选中文本值

    $("#userDep").find("option:selected").text()

  6. 关于appcompat v7出现的问题

    一.问题描述: 新建了一个MIN-SDK为API 8的工程之后,TARGET-SDK为API 17的Android工程之后,自动生成的appcompat v7会提示“v7/value21:no res ...

  7. Android PNG渐变背景图片失真问题 getWindow().setFormat(PixelFormat.RGBA_8888);

    最近一个困扰很久的问题,渐变效果的png图片,设置为控件图片或background时,在eclipse上看着没有什么问题,但是在设备上运行时,可以看到明显的一圈圈的轮廓线,图片严重失真.在网上goog ...

  8. PHP第一章学习——了解PHP(下)

    继续昨天的部分! —————————————————————————————— 首先Ubuntu下安装Apache软件: ubuntu更新源有问题,又要解决半天! 我现在很冷静! 安装Apache教程 ...

  9. [置顶] Asp.Net底层原理(二、写自己的Asp.Net框架)

    我们介绍过了浏览器和服务器之间的交互过程,接下来介绍Asp.net处理动态请求. 写自己的Asp.Net框架,我们不会引用System.Web这个程序集,我们只需要创建要给自己的类库,所以在接下来的程 ...

  10. 人类科技的发展为什么会是加速度的(TRIZ方法再推荐)

    从人类的历史发展来看,近200年来的科技发展的成果超过了过去几千年中科技发展的成果,并且从短时间来看.这样的加速趋势也是很明显的,想想十年前和如今的对照,科技的发展确实是日新月异. 科技的发展固然有偶 ...