scrapy爬虫结果插入mysql数据库

1.通过工具创建数据库scrapy

2.在scrapy数据库中创建douban表

mysql> create table scrapy.douban(id int primary key auto_increment, name varchar(100) NOT NULL, author varchar(50) NULL, press varchar(100) NULL, dat
e varchar(30) NULL, page varchar(30) NULL, price varchar(30) NULL, score varchar(30) NULL, ISBN varchar(30) NULL, author_profile varchar(1500) NULL, c
ontent_description varchar(1500) NULL, link varchar(255) NULL )default charset=utf8;

3.在scrapy爬虫代码中设置指向数据库的参数pipeline.py

# -*- coding: utf-8 -*-

# 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

import json
from twisted.enterprise import adbapi
from scrapy import log
import MySQLdb
import MySQLdb.cursors

class DoubanPipeline(object):

    def __init__(self):
        self.file = open("./books.json", "wb")

    def process_item(self, item, spider):
        # 编码的转换
        for k in item:
            item[k] = item[k].encode("utf8")
        line = json.dumps(dict(item), ensure_ascii=False) + "\n"
        self.file.write(line)
        return item

class MySQLPipeline(object):

    def __init__(self):
        self.dbpool = adbapi.ConnectionPool("MySQLdb",
                                           db = "scrapy",            # 数据库名
                                           user = "root",       # 数据库用户名
                                           passwd = "qmf123456",     # 密码
                                           cursorclass = MySQLdb.cursors.DictCursor,
                                           charset = "utf8",
                                           use_unicode = False
                                           )
    def process_item(self, item, spider):
        query = self.dbpool.runInteraction(self._conditional_insert, item)
        query.addErrback(self.handle_error)
        return item

    def _conditional_insert(self, tb, item):

        tb.execute("insert into douban (name, author, press, date, page, price, score, ISBN, author_profile,\
                   content_description, link) values (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",\
                   (item["name"], item["author"], item["press"], item["date"],                   item["page"], item["price"], item["score"], item["ISBN"],                   item["author_profile"], item["content_description"], item["link"]))
        log.msg("Item data in db: %s" % item, level=log.DEBUG)

    def handle_error(self, e):
        log.err(e)

在setting.py文件中设置

4.安装MySQLdb驱动

MySQL-python-1.2.3.win-amd64-py2.7.exe

查看驱动是否安装成功:

5.通过Python 的MySQLdb查询数据库信息

import MySQLdb

conn=MySQLdb.connect(host="127.0.0.1",user="root",passwd="qmf123456",db="scrapy")
cursor = conn.cursor()

n = cursor.execute("select count(*) from douban")
for row in cursor.fetchall():
    for r in row:
        print r

https://my.oschina.net/u/993130/blog/213617

http://www.jb51.net/article/57290.htm

http://www.cnblogs.com/sislcb/archive/2008/11/24/1339913.html

http://drizzlewalk.blog.51cto.com/2203401/448874

时间: 2024-10-10 18:24:06

scrapy爬虫结果插入mysql数据库的相关文章

PHP Apache Access Log 分析工具 拆分字段成CSV文件并插入Mysql数据库分析

现在需要分析访问日志,怎么办? 比如分析D:\Servers\Apache2.2\logs\access2014-05-22.log http://my.oschina.net/cart/针对这个问题特意开发了一款小工具分析Apache 日志,拆分字段成CSV文件并插入Mysql数据库分析 <?php $date = '2014-05-22'; file_put_contents($date.'.csv', ''); file_put_contents($date.'.csv', '"IP

python 从csv文件插入mysql数据库

一个工作遇到的问题,将excel文件的内容插入到mysql数据库中. 总体思路是 excel文件-->转换成csv文件-->csv文件读取-->读取数据插入mysql数据库 用到python的两个库csv和MySQLdb 下面是具体的code: 代码中数据库部分没啥好记录的,特别记录一下csv库的用法: # Insert data from csv file.csv_file = file('3D_PTlabs.csv', 'rb')csv_reader = csv.reader(csv

关于hibernate插入mysql数据库中文数据乱码处理

这几天在学习hibernate,在程序中将利用hibernate将数据插入的mysql数据库的时候,发现出现了中文乱码,在网上搜索了好长时间,大概的解决方法都是修改my.ini的配置文件,修改为gbk,但是插入数据还是出现乱码的情况.不过最后还是解决了.下面就说一下解决的方法. 1.找到MySql Server Instance onfiguration Wizard管理器,重新配置mysql.如图.前面的配置可以一路下一步,到了图中这一步要修改语言为gbk. 2.要删除之前建立的数据库,重新利

JDBC操作数据库,第一:jsp插入mysql数据库,坎坷摸索分享

JSP连接数据库,坎坷摸索了好久,现在终于做好了,分享一下,希望对更多热爱编程学习的人有所帮助!!!谢谢 第一:首先准备的就是已经安装好Mysql,这里不做多叙述,百度可以做到. 然后在mysql数据库中做如下操作: 需要注意的是自己创建的数据库的名字,和数据表的名字,这两个和后面写的程序息息相关,所以必须引起重视 第二步:就可以开始写程序了. 首先是Book类,这里最需要注意的是起的包名,真的很重要,真的很重要,真的很重要,重要的事情说三遍 1 package com.ningmeng; 2

cmd控制台插入mysql数据库中文信息时,插入失败的解决办法

故障码: mysql> insert into t1(name,sex,age,address) values('张三','男',11,'沙河'); ERROR 1366 (HY000): Incorrect string value: '\xD5\xC5\xC8\xFD' for column 'name' at row 1 该故障是由于中文编码不一致导致的数据插入失败所致. 一般mysql数据库在插入中文信息时出错的情况无外乎就是中文编码不一致所致.而目前支持中文的编码格式基本上有utf-8

web 项目:解决插入 MySQL 数据库时中文乱码问题

背景:在做 javaweb 项目的时,前台传递的中文最后插入数据库的时候总是出现乱码现象. 解决方案 ? A.不管是使用 Idea.eclipse,确定自己的项目所使用的字符集是 UTF-8. ? B.查看 MySQL的字符集是否是 UTF-8.打开 Dos 窗口,输入:mysql -u root -p, 在输入密码即可进入数据库.进入数据库输入命令 :show variables like 'character%';查看数据库的字符集,如下图: ? MySQL 的默认编码是 Latin1,不支

使用log4net无法将日志记录插入mysql数据库解决办法

写在前面 今天没事研究了下,将日志文件写入mysql数据库,因为新公司用的数据库也是mysql,项目中需要将日志信息写入数据库,没办法,就研究了下.在使用过程中遇到一个很蛋疼的问题.最后解决了,郁闷了半天.这里做一下记录,以免再犯. 之前写个这方面的文章,关于配置信息,可参考我的这篇文章:Log4Net日志记录两种方式 解决办法 问题就出在我直接将log4net写入数据库的配置文件log4net.config直接复制过来在项目中使用了,当然是修改了连接字符串,提供程序等与mysql相关的配置.配

scrapy数据存储在mysql数据库的两种方式

方法一:同步操作 1.pipelines.py文件(处理数据的python文件) import pymysql class LvyouPipeline(object): def __init__(self): # connection database self.connect = pymysql.connect(host='XXX', user='root', passwd='XXX', db='scrapy_test') # 后面三个依次是数据库连接名.数据库密码.数据库名称 # get c

python 插入mysql数据库数据

建立数据库连接 def create_db_connect():    """    brief info for: create_db_connect         建立数据库链接          Args:          Return:          Raise:    """    conn = MySQLdb.connect(host = "rm-uf6wz3f7kb8sx983zo.mysql.rds.aliyun