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

   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     ==

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

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

时间: 2024-12-22 22:14:51

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

网络爬虫-用Java来抓取网页实例中HttpClient类的问题

问题描述 用Java来抓取网页实例中HttpClient类的问题 报这么一大堆错误我也是受不了了...... 主要的问题应该是HttpClient类这个东西,在网上查了这个类是httpclient-2.x.jar包的产物,我导入的是httpclient-4.2.2.jar和httpcore-4.2.2.jar包,而这两个新的工具包并不包含HttpClient类,查阅了Java API帮助文档后,自己并没有找到HttpClient类的替代类,而是一堆接口和抽象类,由于是刚开始写这个,所以有点懵.

天气预报之抓取、解析、存入MYSQL数据库模块实现,不规范(代码)

package com.zzk.cn; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.MalformedURLE

精通Python网络爬虫:核心技术、框架与项目实战导读

前 言 为什么写这本书 网络爬虫其实很早就出现了,最开始网络爬虫主要应用在各种搜索引擎中.在搜索引擎中,主要使用通用网络爬虫对网页进行爬取及存储. 随着大数据时代的到来,我们经常需要在海量数据的互联网环境中搜集一些特定的数据并对其进行分析,我们可以使用网络爬虫对这些特定的数据进行爬取,并对一些无关的数据进行过滤,将目标数据筛选出来.对特定的数据进行爬取的爬虫,我们将其称为聚焦网络爬虫.在大数据时代,聚焦网络爬虫的应用需求越来越大. 目前在国内Python网络爬虫的书籍基本上都是从国外引进翻译的,

使用Scrapy抓取数据

Scrapy是Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scrapy用途广泛,可以用于数据挖掘.监测和自动化测试. 官方主页: http://www.scrapy.org/ 中文文档:Scrapy 0.22 文档 GitHub项目主页:https://github.com/scrapy/scrapy Scrapy 使用了 Twisted 异步网络库来处理网络通讯.整体架构大致如下(注:图片来自互联网): Scrapy主要包括了以下

Python网络爬虫2 ---- scrapy爬虫架构介绍和初试

原文出处:http://my.oschina.net/dragonblog/blog/173290 上一篇文章的环境搭建是相对于手动操作的过程,而大家可能对这个疑问是什么是scrapy?为什么要用scrapy?下面主要是对这两个问题的简要回答. 请尊重作者的工作,转载请注明出处http://my.oschina.net/dragonblog/blog/173545 相信大家在百度或google上一搜索scrapy都能够找到一大堆的结果,由于我本人对scrapy没有太了解,因此这里我也是引用了网络

如何用python关键词搜索新浪微博并海量抓取评论?

问题描述 如何用python关键词搜索新浪微博并海量抓取评论? 各位大牛好,我想用python做一件事:在新浪微博上用关键词搜索微博,并尽可能多地抓取相关微博,然后抓取其评论,并进行文本分析.现在得知可:1.用API接口.但是我不知道个人可不可以申请使用,是不是要创建应用,审核通过才行?那么创建哪种应用好?万一审核不过怎么办?用SDK的话,怎么使用?是不是只有自己的微博的评论才能抓取啊?.2.用爬虫,模拟浏览器行为.据说抓得多了会被封号.要怎么办?另外,新浪微博有原创.评论.转发.评论后转发--

精通Python网络爬虫(0):网络爬虫学习路线

作者:韦玮 转载请注明出处 随着大数据时代的到来,人们对数据资源的需求越来越多,而爬虫是一种很好的自动采集数据的手段. 那么,如何才能精通Python网络爬虫呢?学习Python网络爬虫的路线应该如何进行呢?在此为大家具体进行介绍. 1.选择一款合适的编程语言 事实上,Python.PHP.JAVA等常见的语言都可以用于编写网络爬虫,你首先需要选择一款合适的编程语言,这些编程语言各有优势,可以根据习惯进行选择.在此笔者推荐使用Python进行爬虫项目的编写,其优点是:简洁.掌握难度低. 2.掌握

精通Python网络爬虫:核心技术、框架与项目实战.3.1 网络爬虫实现原理详解

 摘要 通过前面章节的学习,我们已经基本认识了网络爬虫,那么网络爬虫应该怎么实现?核心技术又有哪些呢?在本篇中,我们首先会介绍网络爬虫的相关实现原理与实现技术:随后,讲解Urllib库的相关实战内容:紧接着,带领大家一起开发几种典型的网络爬虫,让大家在实战项目中由浅入深地掌握Python网络爬虫的开发:在学会了一些经典的网络爬虫开发之后,我们将一起研究学习Fiddler抓包分析技术.浏览器伪装技术.爬虫定向抓取技术等知识,让大家更加深入地进入到网络爬虫技术的世界中来.   第3章 网络爬虫实现原

【Python爬虫9】Python网络爬虫实例实战

爬Google搜索引擎 爬Facebook和Linkein 1自动化登录Facebook 2提取Facebook的API数据 3自动化登录Linkedin 爬在线商店Gap 爬宝马官网 爬取Google真实的搜索表单 爬取依赖JavaScript的网站Facebook 爬取典型在线商店Gap 爬取拥有地图接口的宝马官网 1.爬Google搜索引擎 # -*- coding: utf-8 -*- import sys import urllib import urlparse import lxm