这是在博客园的第一篇文章,由于本人还是一个编程菜鸟,也写不出那些高大上的牛逼文章,这篇文章就是对自己这段时间学习python的一个总结吧。

  众所周知python是一门对初学编程的人相当友好的编程语言,就像本屌丝一样,一学就对它产生好感了!当然,想要精通它还有很多东西需要学习。那废话不多说了,下面我就来说一下如何用python3.x与mysql数据库构建一个简单的爬虫系统(其实就是把从网页上爬下来的内容存储到mysql数据库中)。

首先就是搭建环境了,这里就简介绍一下我的环境吧。本机的操作系统是win7,python版本是3.3,mysql数据库版本是5.6,mysql-wokebench版本是5.2。

环境搭建完后,就可以开始来写爬虫了。这里实验的网站是鼠绘动漫网(本人是个漫画迷^_^)。先去网站踩点,寻找我们需要的内容,这里我只需要爬网站的每一话

漫画的名字与各漫画的图片链接。下面就直接上代码啦

import urllib.request
import re
from mysql.connector import * #爬取整个网页的方法
def open_url(url):
req=urllib.request.Request(url)
respond=urllib.request.urlopen(req)
html=respond.read().decode('utf-8')
return html #爬取每个页面中每一话漫画对应的链接
def get_url_list(url):
html=open_url(url)
p=re.compile(r'<a href="(.+)" title=".+ <br>.+?">')
url_list=re.findall(p,html)
return url_list #自动进入每一话漫画对应的链接中爬取每一张图片对应的链接并插入到mysql数据库
def get_img(url):
#获取每个页面中每一话漫画对应的链接
url_list=get_url_list(url)
#连接mysql数据库
conn=connect(user='root',password='',database='test2')
#创建游标
c=conn.cursor()
try:
#创建一张数据库表
c.execute('create table cartoon(name varchar(30) ,img varchar(100))')
except:
#count用来计算每一张网页有多少行数据被插入
count=0
for each_url in url_list:
html=open_url(each_url)
p1=re.compile(r'<img src="(.+)" alt=".+?>')
p2=re.compile(r'<h1>(.+)</h1>')
img_list=re.findall(p1,html)
title=re.findall(p2,html)
for each_img in img_list:
c.execute('insert into cartoon values(%s,%s)',[title[0],each_img])
count+=c.rowcount
print('有%d行数据被插入'%count) finally:
#提交数据,这一步很重要哦!
conn.commit()
#以下两步把游标与数据库连接都关闭,这也是必须的!
c.close()
conn.close() num=int(input('前几页:'))
for i in range(num):
url='http://www.ishuhui.com/page/'+str(i+1)
get_img(url)

这是数据库的结果:

代码已经注释的很清晰了。这里需要注意的是要去下载mysql-connector-python模块,这是一个python与mysql连接的模块,直接

pip install mysql-connector-python --allow-external mysql-connector-python  

 可以看出用python写爬虫并把数据存入数据库是很简单的,这也是python优雅的地方!当然,这只是一个很简单的爬虫系统,还有很多细节要去完善,只适合小
数据。但是学习都是从简单的开始嘛。
http://www.cnblogs.com/tester-zhenghan/p/4887838.html

用python3.x与mysql数据库构建简单的爬虫系统(转)的更多相关文章

  1. Mysql数据库的简单介绍与入门

    Mysql数据库的简单介绍与入门 前言 一.下载与安装 1.下载 官网下载MYSQL5.7.21版本,链接地址https://www.mysql.com/downloads/.下载流程图如下: 找到M ...

  2. python3.4连接mysql数据库的方法

    python3.4连接mysql数据库的方法 发布时间:2014-08-04编辑:www.jbxue.com 本文介绍了python3.4连接mysql数据库的方法,在python3.4中不能用mys ...

  3. PHP连接局域网MYSQL数据库的简单实例

    PHP连接局域网MYSQL数据库的简单实例 [php] view plaincopy <?PHP /** * php连接mysql数据库 * by www.jbxue.com */ $conn= ...

  4. 使用JDBC分别利用Statement和PreparedStatement来对MySQL数据库进行简单的增删改查以及SQL注入的原理

    一.MySQL数据库的下载及安装 https://www.mysql.com/ 点击DOWNLOADS,拉到页面底部,找到MySQL Community(GPL)Downloads,点击 选择下图中的 ...

  5. Java连接MySQL数据库及简单的增删查改操作

    主要摘自 https://www.cnblogs.com/town123/p/8336244.html https://www.runoob.com/java/java-mysql-connect.h ...

  6. linux操作mysql数据库常用简单步骤

    连接mysql数据库: 主要看mysql安装在哪一个目录下: mysql -h主机地址 -u用户名 -p用户密码   或者mysql -h ip地址 -u  zaiai -p zaiai   或者/v ...

  7. Java连接MySQL数据库及简单操作代码

    1.Java连接MySQL数据库 Java连接MySql需要下载JDBC驱动MySQL-connector-java-5.0.5.zip(举例,现有新版本).然后将其解压缩到任一目录.我是解压到D盘, ...

  8. Go 连接 mysql 数据库的简单测试.

    1. import 的时候 总是很慢 容易失败 所以 优先导入几个必须要的包 go get github.com/go-sql-driver/mysql 安装完之后 会在gopath 目录下发现相关的 ...

  9. python3中的mysql数据库操作

    软硬件环境 OS X EI Capitan Python 3.5.1 mysql 5.6 前言 在开发中经常涉及到数据库的使用,而python对于数据库也有多种解决方法.本文以python3中的mys ...

随机推荐

  1. Google Protocol Buffers和java字符串处理控制

    大多数的操作码被从夜晚复制.懒得敲. 直接在源代码和测试结果如下. serabuffer.proto档.使用下面的命令来生成java代码. protoc -I=./ --java_out=./ ser ...

  2. minihomepage.exe 百度视频迷你主页

    百度视频最近动作可真.延续"DHot.exe 热点资讯"之后,又在桌面上出现了Tips窗体,例如以下图: 尽管是迷你的,可还是把其他桌面图标给挡了啊! 突然出来这么个窗体.我还以为 ...

  3. [文学阅读] METEOR: An Automatic Metric for MT Evaluation with Improved Correlation with Human Judgments

    METEOR: An Automatic Metric for MT Evaluation with Improved Correlation with Human Judgments Satanje ...

  4. 区间第K大

    protected static int partitions(List<KDNode> data,int left,int right,int k,int pos){ int l = l ...

  5. c++ primer 函数传值1

    不看c++ primer  永远不知道自己基础有多差 函数的參数传值一般有两种方式:值传递,引用传递. 值传递有以下两种形式: void func( int a ) { // } void func1 ...

  6. uml 9图不同的角度品种分类

    只要阅读uml视频后为其9一些模糊样图或理解.话又说回来后来他们自己的系统看着笔记,统的了解.以下分别从两个不同的角度对uml中9种图进行理解以及当中某些图的区分,本人比較菜,有些不完好的地方欢迎提出 ...

  7. Unity3d该物业(Attributes)整理

    http://blog.sina.com.cn/s/blog_5b6cb9500101857b.html Attributes属性属于U3D的RunTimeClass,所以加上下面的命名空间是必须的了 ...

  8. 在 VS 类库项目中 Add Service References 和 Add Web References 的区别

    原文:在 VS 类库项目中 Add Service References 和 Add Web References 的区别 出身问题: 1.在vs2005时代,Add Web Reference(添加 ...

  9. JFileChooser

    http://www.cnblogs.com/dyllove98/archive/2012/03/05/2461895.html package swing.choose; import java.a ...

  10. 【Java 之 JVM】Java内存结构概述

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWl3dXpoaWxpbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...