鱼C论坛

 找回密码
 立即注册
查看: 4156|回复: 7

[作品展示] 用python3.x与mysql数据库构建简单的爬虫系统

[复制链接]
发表于 2015-10-17 17:36:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 富友郑鹏展 于 2015-10-17 17:39 编辑

  各位鱼油好!这篇文章就是自己这段时间学习python的一个总结。本人还是个菜鸟。看的时候多多包涵哈!

众所周知python是一门对初学编程的人相当友好的编程语言,就像本屌丝一样,一学就对它产生好感了!当然,想要精通它还有很多东西需要学习。那

废话不多说了,下面我就来说一下如何用python3.x与mysql数据库构建一个简单的爬虫系统(其实就是把从网页上爬下来的内容存储到mysql数据库中)。

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

环境搭建完后,就可以开始来写爬虫了。这里实验的网站是鼠绘动漫网(本人是个漫画迷^_^)。先去网站踩点,寻找我们需要的内容,这里我只需要爬网站的每一话漫画的名字与各漫画的图片链接。下面就直接上代码啦
  1. import urllib.request
  2. import re
  3. from mysql.connector import *

  4. #爬取整个网页的方法
  5. def open_url(url):
  6.     req=urllib.request.Request(url)
  7.     respond=urllib.request.urlopen(req)
  8.     html=respond.read().decode('utf-8')
  9.     return html

  10. #爬取每个页面中每一话漫画对应的链接
  11. def get_url_list(url):
  12.     html=open_url(url)
  13.     p=re.compile(r'<a href="(.+)" title=".+ <br>.+?">')
  14.     url_list=re.findall(p,html)
  15.     return url_list

  16. #自动进入每一话漫画对应的链接中爬取每一张图片对应的链接并插入到mysql数据库
  17. def get_img(url):
  18.     #获取每个页面中每一话漫画对应的链接
  19.     url_list=get_url_list(url)
  20.     #连接mysql数据库
  21.     conn=connect(user='root',password='',database='test2')
  22.     #创建游标
  23.     c=conn.cursor()
  24.     try:
  25.         #创建一张数据库表
  26.         c.execute('create table cartoon(name varchar(30) ,img varchar(100))')
  27.     except:
  28.         #count用来计算每一张网页有多少行数据被插入
  29.         count=0
  30.         for each_url in url_list:        
  31.             html=open_url(each_url)
  32.             p1=re.compile(r'<img src="(.+)" alt=".+?>')
  33.             p2=re.compile(r'<h1>(.+)</h1>')
  34.             img_list=re.findall(p1,html)
  35.             title=re.findall(p2,html)
  36.             for each_img in img_list:
  37.                 c.execute('insert into cartoon values(%s,%s)',[title[0],each_img])
  38.                 count+=c.rowcount
  39.         print('有%d行数据被插入'%count)

  40.     finally:
  41.         #提交数据,这一步很重要哦!
  42.         conn.commit()
  43.         #以下两步把游标与数据库连接都关闭,这也是必须的!
  44.         c.close()
  45.         conn.close()
  46.         
  47.                     

  48. num=int(input('前几页:'))              
  49. for i in range(num):
  50.     url='http://www.ishuhui.com/page/'+str(i+1)
  51.     get_img(url)


  52.                                 

  53.         
复制代码


这是数据库的结果:

QQ截图20151017172229.jpg

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

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

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

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-10-18 13:06:45 | 显示全部楼层
不错啊。话说楼主你看了哪些Python的书啊。有没有推荐
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-10-19 11:47:19 | 显示全部楼层
楼主好强大
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-10-19 11:47:53 | 显示全部楼层
赞积分做题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-29 15:52:36 | 显示全部楼层
不错,能写出这个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-2-25 10:20:51 | 显示全部楼层
楼主溜溜溜
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-5-5 23:02:09 | 显示全部楼层
我写的这个可以正常爬取数据,可是往数据库插入时老是提示错误,不明白,那个“myname”就是一个变量而已,不知道为什么错误,求大神指教
QIP{3][Z6AVWD3X)%BI_RKV.png
{YSK%A(VKGVE0S5JCI1DVF6.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-18 15:07:23 | 显示全部楼层
不错,学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 05:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表