花了些时间看了Python一整本书,写了些小例子,因为是有经验的人自学,所以很多都是跳过的。

不过学习还是得在实践中去,学一门语言还得运用中去。

去下一些例子下来,去运行,调试时最好的了。

《网络爬虫抓取豆瓣3万本书》这个代码来自:http://www.cnblogs.com/nima/p/5614662.html#

好像是这个博主的课程设计来的,还不知道人家毕业没,不过达者为先,老夫就厚颜学习一次了。

我用的是eclipse+pydev。很爽,比之前用sublime,notepad++,idle爽太多了。墙裂推荐。可以看我前一篇博客。

说回正题。

这个项目把爬虫分成了8个部分:

从用途上比我以前做的什么图书管理系统直流有用多了。

算是一个质量比较高的课程设计了。就不知道是不是从0开始做的。

又扯远了。

我只做代码分析就好了。

因为每个电脑的环境不同,我自己又用了mysql提供的数据库模块,跟原来的不同,所以一边修改一边调试,这也是加深学习的一种方式吧。

其实也可以说已经改得面目全非了,哈哈哈哈哈

先看代码:

step1.py

# -*- coding:utf-8 -*-
# 创建相关的数据库import tool.DbManagerdbManager = tool.DbManager.DbManager() #已经在里面进行初始连接了
#创建数据库,原来不用加的。
dbManager.execNonQuery(r"create database doubanbook ;")
#使用新创建的数据库
dbManager.execNonQuery(r"use doubanbook;")
#构建了表book,
dbManager.execNonQuery(r"""
CREATE TABLE book (id int(11) NOT NULL AUTO_INCREMENT COMMENT '自增ID',bookname varchar(100) NOT NULL COMMENT '书名',bookurl varchar(150) NOT NULL COMMENT '书入口',bookimg varchar(150) DEFAULT NULL COMMENT '书图片',bookinfo varchar(250) DEFAULT NULL COMMENT '书出版信息',bookstar varchar(45) DEFAULT NULL COMMENT '书评价星数',bookno varchar(45) NOT NULL COMMENT '书编号',PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='书表';
""")
#构建了表booktag,
dbManager.execNonQuery(r"""
CREATE TABLE booktag (id int(11) NOT NULL AUTO_INCREMENT,bookname varchar(100) DEFAULT NULL COMMENT '书名',bookno varchar(45) DEFAULT NULL COMMENT '书编号',booktag varchar(45) DEFAULT NULL COMMENT '书标签',bookkind varchar(45) DEFAULT NULL COMMENT '书分类',PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='书标签';
""")
#构建了表booktial,
dbManager.execNonQuery(r"""
CREATE TABLE bookdetial (id int(11) NOT NULL AUTO_INCREMENT,bookname varchar(100) NOT NULL COMMENT '书名',bookno varchar(45) NOT NULL COMMENT '书编号',bookinfo text COMMENT '书出版信息',bookintro text COMMENT '书介绍',authorintro text COMMENT '作者介绍',peoples int(11) DEFAULT NULL COMMENT '评价人数',starts varchar(100) DEFAULT NULL COMMENT '星级情况',other text COMMENT '其他信息',mulu mediumtext COMMENT '图书目录',comments mediumtext COMMENT '评论人',PRIMARY KEY (id),UNIQUE KEY bookno_UNIQUE (bookno)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='图书详情表';
""")
# DbManager.py
import mysql.connector #引入数据库的模块config={'host':'127.0.0.1',#数据库所在的主机地址,默认127.0.0.1  'user':'root',  #用户'password':'root',  #密码'port':3306 ,#默认即为3306  'database':'test',#数据库名称  'charset':'utf8'#默认即为utf8  } class DbManager:"""对mysql.connector的简单封装,实现基本的连接"""def __init__(self ): self.__initConnect()def __initConnect(self):"""得到连接信息返回: conn.cursor()""" self.conn = mysql.connector.connect(**config)#链接,通过这个来操作链接self.cur = self.conn.cursor() #游标,通过这个访问数据库if not self.cur:raise (NameError, "连接数据库失败")def execQuery(self, sql):"""执行查询语句返回的是一个包含tuple的list,list的元素是记录行,tuple的元素是每行记录的字段调用示例: resList = dbManager.execQuery("SELECT id,NickName FROM WeiBoUser")for (id,NickName) in resList:print(str(id),NickName)"""self.cur.execute(sql)#print("查询语句:"+sql)resList = self.cur.fetchall()return resListdef execNonQuery(self, sql):"""执行非查询语句调用示例:cur = self.__GetConnect()cur.execute(sql)self.conn.commit()self.conn.close()"""try:self.cur.execute(sql)self.conn.commit()print('执行语句成功')except Exception:  # 出现异常回滚print('执行SQL语句失败:'+sql)self.conn.rollback()raisedef __del__(self):self.cur.close()#测试语句
def testinsert():dbManager = DbManager()dbManager.ExecNonQuery("insert into `bookdetial` (booknafme) values ('你哈') ")
#测试语句
def testselect():dbManager = DbManager()print(dbManager.execQuery('SELECT * FROM t_test_paper limit 10'))#测试语句
if __name__ == '__main__':# testinsert()testselect()

总结:

1.第一步的代码,是创建数据库以及相关的表,在第一次运行之后,就不需要运行了。

其实如果不需要根据运行的情况,在运行的时候创建表,我是觉得直接用可视化工具创建表示更加省功夫的。

2.期间还是发现很多问题的,mysql是模块名,所以自己的模块就不能有相同的模块名,否则会报一些奇怪的错误。

3.sql语句里面,表名、字段名是不需要单引号包着的,或者可以用`包着,这个就是键盘上面tab上一个,或者1左边那个符号,不知道叫什么。

毕业这么多年才知道,因为一直用Navicat来创建表的。或许这就是使用可视化工具的副作用吧。

4.好多地方可以优化的,不过就先不纠结了,现阶段看多几份代码可能更加有效果。

Python实例:网络爬虫抓取豆瓣3万本书(1)相关推荐

  1. Python实例:网络爬虫抓取豆瓣3万本书(5)

    第五步没有什么心的知识点. 直接看代码吧. # -*- coding:utf-8 -*- # 提取各标签列表页到excel import time import os.path from tool.E ...

  2. Python实例:网络爬虫抓取豆瓣3万本书(9)

    代码在这里:点击打开链接 这个实例是作者的一次课程设计.虽然内容不咋的,但是作为课程设计,我还是很惊讶的了. 至少我以前没做过这种程度的课程设计.当然实习和毕业设计除外. 再总结一下吧. 1.知识点在 ...

  3. python展示全部好友_利用Python网络爬虫抓取微信好友的签名及其可视化展示

    前几天给大家分享了如何利用Python词云和wordart可视化工具对朋友圈数据进行可视化,利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例,以及利用Python网络爬虫抓取微信好友的所 ...

  4. 编写Python爬虫抓取豆瓣电影TOP100及用户头像的方法

    这篇文章主要介绍了编写Python爬虫抓取豆瓣电影TOP100及用户头像的方法,用到了Python的urllib和urllib2模块,需要的朋友可以参考下 抓取豆瓣电影TOP100 一.分析豆瓣top ...

  5. python爬虫微信朋友圈怎么发文字_如何利用Python网络爬虫抓取微信朋友圈的动态(上)...

    今天小编给大家分享一下如何利用Python网络爬虫抓取微信朋友圈的动态信息,实际上如果单独的去爬取朋友圈的话,难度会非常大,因为微信没有提供向网易云音乐这样的API接口,所以很容易找不到门.不过不要慌 ...

  6. python爬虫好友聊天记录_利用Python网络爬虫抓取微信好友的签名及其可视化展示...

    前几天给大家分享了如何利用Python词云和wordart可视化工具对朋友圈数据进行可视化,利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例,以及利用Python网络爬虫抓取微信好友的所 ...

  7. 用python爬虫下载视频_使用Python编写简单网络爬虫抓取视频下载资源

    我第一次接触爬虫这东西是在今年的5月份,当时写了一个博客搜索引擎,所用到的爬虫也挺智能的,起码比电影来了这个站用到的爬虫水平高多了! 回到用Python写爬虫的话题. Python一直是我主要使用的脚 ...

  8. python抓取微信朋友圈动态_2018最全如何利用Python网络爬虫抓取微信朋友圈的动态...

    今天小编给大家分享一下如何利用Python网络爬虫抓取微信朋友圈的动态信息,实际上如果单独的去爬取朋友圈的话,难度会非常大,因为微信没有提供向网易云音乐这样的API接口,所以很容易找不到门.不过不要慌 ...

  9. python爬虫能爬取微信密码吗_如何利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例...

    今天我们继续focus on微信,不过这次给大家带来的是利用Python网络爬虫抓取微信好友总数量和微信好友男女性别的分布情况.代码实现蛮简单的,具体的教程如下. 相信大家都知道,直接通过网页抓取微信 ...

最新文章

  1. Pandas转pivot, groupby等结果为dataFrame--彻底解决多表头问题
  2. Java并发编程之美读书笔记-并发编程基础2
  3. Java虚拟机------JVM分析工具
  4. pytorch3d在linux下安装
  5. c# lock的使用及注意事项
  6. SVN—如何安装SVN客户端软件
  7. 云上的消费你真的算清楚了?
  8. 数据结构严蔚敏 栈基本操作 C语言实现
  9. easyui select 默认选中指定值
  10. UPX3.95程序压缩命令及使用方法
  11. 卡内基梅隆计算机专业,2019美国大学计算机科学专业排名TOP10一览 卡内基梅隆大学居...
  12. 英语口语必备900句
  13. git目录下object文件过大清理
  14. 小红书 x DorisDB:实现数据服务平台统一化,简化数据链路,提升高并发极速查询能力...
  15. Sim Lock —— 手机Network锁
  16. java数据类型有哪些(给博主倒一杯卡布奇诺)
  17. 苹果手机10秒解除锁屏_忘记苹果锁屏密码10秒解决 音量键选择wipedata/
  18. 安装ruby-2.3.1
  19. 安全多方计算-入门学习笔记(二)
  20. 计算机控制电机启动接线图,详解单相电机电容接线图

热门文章

  1. 《系统思考实践篇》知识点框架总结
  2. 8、Hive数据仓库——环境搭建及简单使用
  3. 前端流行使用的五种框架对比
  4. iOS Info.plist contained no UIScene configuration dictionary (looking for configuration named?
  5. 【Python】类 - (Dog类)
  6. 用extjs发现ie漏洞
  7. Altium designer 22 设置相关记录
  8. “一人负债,全家背锅”,严厉打击信用卡套现欺诈
  9. 目标检测实战必会!4种基于YOLO目标检测(Python和C++两种版本实现)
  10. SQLserver随机数函数