Python 网络爬虫5 ---- 第一次实现抓取数据并且存放到mysql数据库中

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介:    1 如果没有看过scrapy的朋友,可以到scrapy的官网看一下再来看这篇文章         2 创建一个scrapy的项目,请看http://blog.


   1 如果没有看过scrapy的朋友,可以到scrapy的官网看一下再来看这篇文章

    

   2 创建一个scrapy的项目,请看http://blog.csdn.net/chenguolinblog/article/details/19699865


   3 下面我们就一个一个文件的来分析,最后我会给出GitHub上面的源码

  

(1)第一个文件 spidr.py,这个文件的作用就是我们自己定义的蜘蛛,用来爬取网页的,具体看以下的注释

__author__ = 'chenguolin'
"""
Date: 2014-03-06
"""

from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.contrib.spiders import CrawlSpider, Rule        #这个是预定义的蜘蛛,使用它可以自定义爬取链接的规则rule
from scrapy.selector import HtmlXPathSelector               #导入HtmlXPathSelector进行解析
from firstScrapy.items import FirstscrapyItem

class firstScrapy(CrawlSpider):
    name = "firstScrapy"                                    #爬虫的名字要唯一
    allowed_domains = ["yuedu.baidu.com"]                   #运行爬取的网页
    start_urls = ["http://yuedu.baidu.com/book/list/0?od=0&show=1&pn=0"]   #第一个爬取的网页
    #以下定义了两个规则,第一个是当前要解析的网页,回调函数是myparse;第二个则是抓取到下一页链接的时候,不需要回调直接跳转
    rules = [Rule(SgmlLinkExtractor(allow=('/ebook/[^/]+fr=booklist')), callback='myparse'),
             Rule(SgmlLinkExtractor(allow=('/book/list/[^/]+pn=[^/]+', )), follow=True)]

    #回调函数
    def myparse(self, response):
        x = HtmlXPathSelector(response)
        item = FirstscrapyItem()

        # get item
        item['link'] = response.url
        item['title'] = ""
        strlist = x.select("//h1/@title").extract()
        if len(strlist) > 0:
            item['title'] = strlist[0]
        # return the item
        return item




(2)第二个文件是items.py,定义我们所需要的字段,因为我们这边只抓取图书的“名字”和“链接“,于是字段都是str

from scrapy.item import Item, Field

class FirstscrapyItem(Item):
    title = Field(serializer=str)
    link = Field(serializer=str)


 
(3) 第三个文件是pipelines.py,由于要连接数据库,这边用到了twisted连接mysql的方法

# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: http://doc.scrapy.org/en/latest/topics/item-pipeline.html

from twisted.enterprise import adbapi              #导入twisted的包
import MySQLdb
import MySQLdb.cursors

class FirstscrapyPipeline(object):
    def __init__(self):                            #初始化连接mysql的数据库相关信息
        self.dbpool = adbapi.ConnectionPool('MySQLdb',
                db = 'bookInfo',
                user = 'root',
                passwd = '123456',
                cursorclass = MySQLdb.cursors.DictCursor,
                charset = 'utf8',
                use_unicode = False
        )

    # pipeline dafault function                    #这个函数是pipeline默认调用的函数
    def process_item(self, item, spider):
        query = self.dbpool.runInteraction(self._conditional_insert, item)
        return item

    # insert the data to databases                 #把数据插入到数据库中
    def _conditional_insert(self, tx, item):
        sql = "insert into book values (%s, %s)"
        tx.execute(sql, (item["title"], item["link"]))



(4)在unbuntu下mysql的可视化工具截图

   


(5)大家可以从我的github上面直接clone项目,地址:https://github.com/chenguolin/firstScrapyProject.git


     ==================================

     ==      from:陈国林                                        ==

     ==      email:cgl1079743846@gmail.com     ==

     ==      转载请注明出处,谢谢!                        ==

     ==================================



相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
5天前
|
机器学习/深度学习 PyTorch TensorFlow
【Python机器学习专栏】循环神经网络(RNN)与LSTM详解
【4月更文挑战第30天】本文探讨了处理序列数据的关键模型——循环神经网络(RNN)及其优化版长短期记忆网络(LSTM)。RNN利用循环结构处理序列依赖,但遭遇梯度消失/爆炸问题。LSTM通过门控机制解决了这一问题,有效捕捉长距离依赖。在Python中,可使用深度学习框架如PyTorch实现LSTM。示例代码展示了如何定义和初始化一个简单的LSTM网络结构,强调了RNN和LSTM在序列任务中的应用价值。
|
5天前
|
机器学习/深度学习 PyTorch TensorFlow
【Python机器学习专栏】卷积神经网络(CNN)的原理与应用
【4月更文挑战第30天】本文介绍了卷积神经网络(CNN)的基本原理和结构组成,包括卷积层、激活函数、池化层和全连接层。CNN在图像识别等领域表现出色,其层次结构能逐步提取特征。在Python中,可利用TensorFlow或PyTorch构建CNN模型,示例代码展示了使用TensorFlow Keras API创建简单CNN的过程。CNN作为强大深度学习模型,未来仍有广阔发展空间。
|
5天前
|
机器学习/深度学习 自然语言处理 语音技术
【Python 机器学习专栏】Python 深度学习入门:神经网络基础
【4月更文挑战第30天】本文介绍了Python在深度学习中应用于神经网络的基础知识,包括神经网络概念、基本结构、训练过程,以及Python中的深度学习库TensorFlow和PyTorch。通过示例展示了如何使用Python实现神经网络,并提及优化技巧如正则化和Dropout。最后,概述了神经网络在图像识别、语音识别和自然语言处理等领域的应用,并强调掌握这些知识对深度学习的重要性。随着技术进步,神经网络的应用将持续扩展,期待更多创新。
|
5天前
|
机器学习/深度学习 数据可视化 TensorFlow
Python用线性回归和TensorFlow非线性概率神经网络不同激活函数分析可视化
Python用线性回归和TensorFlow非线性概率神经网络不同激活函数分析可视化
10 0
|
5天前
|
机器学习/深度学习 PyTorch 算法框架/工具
Python用GAN生成对抗性神经网络判别模型拟合多维数组、分类识别手写数字图像可视化
Python用GAN生成对抗性神经网络判别模型拟合多维数组、分类识别手写数字图像可视化
|
6天前
|
SQL 关系型数据库 MySQL
使用Python的pymysql库连接MySQL,执行CRUD操作
使用Python的pymysql库连接MySQL,执行CRUD操作:安装pymysql,然后连接(host='localhost',user='root',password='yourpassword',database='yourdatabase'),创建游标。查询数据示例:`SELECT * FROM yourtable`;插入数据:`INSERT INTO yourtable...`;更新数据:`UPDATE yourtable SET...`;删除数据:`DELETE FROM yourtable WHERE...`。
13 0
|
6天前
|
API 数据库 Python
Python web框架fastapi数据库操作ORM(二)增删改查逻辑实现方法
Python web框架fastapi数据库操作ORM(二)增删改查逻辑实现方法
|
6天前
|
关系型数据库 MySQL API
Python web框架fastapi数据库操作ORM(一)
Python web框架fastapi数据库操作ORM(一)
|
6天前
|
数据采集 Web App开发 数据可视化
Python爬虫技术与数据可视化:Numpy、pandas、Matplotlib的黄金组合
Python爬虫技术与数据可视化:Numpy、pandas、Matplotlib的黄金组合
|
6天前
|
网络协议 算法 网络架构
Python网络编程之udp编程、黏包以及解决方案、tcpserver
Python网络编程之udp编程、黏包以及解决方案、tcpserver