Wechat: yu389741| Email: gisdqy@163.com

Shop:https://www.giserdqy.com/shop

如何把采集结果存入mysql


pyspider
是个非常强大简单易用的爬虫框架,但是默认软件会把采集的所有字段打包保存到默认的数据库中,和其它软件没法整合。现在需求是需要把采集的字段做为单独的字段保存到自定义的mysql数据库中,本人技术能力有限,个人感觉实现方法不是最优的,大家有能力的请自行改进,没能力的凑合着用吧。或是直接下载py脚本:把 pyspider的结果存入自定义的mysql数据库中mysqldb.zip,文章结尾有下载链接.

pyspider结果保存到数据库简单样例。
使用方法:
1,把本文件放到pyspider/pyspider/database/mysql/目录下命名为mysqldb.py。
2,修改本文件的数据库配置参数及建立相应的表和库。
3,在脚本文件里使用from pyspider.database.mysql.mysqldb import SQL引用本代码.
4,重写on_result方法,实例化sql并调用replace(replace方法参数第一个是表名,第二个是结果。)。

简单例子如下:

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
# Created on 2015-01-26 13:12:04
# Project: jishubu.net
    
from pyspider.libs.base_handler import *
from pyspider.database.mysql.mysqldb import SQL
    
    
class Handler(BaseHandler):
    crawl_config = {
    }
    
    @every(minutes=24 * 60)
    def on_start(self):
        self.crawl('http://www.jishubu.net/', callback=self.index_page)
    
    @config(age=10 * 24 * 60 * 60)
    def index_page(self, response):
        for each in response.doc('p.pic a[href^="http"]').items():
            print each.attr.href
               
    @config(priority=2)
    def detail_page(self, response):
        return {
            "url": response.url,
            "title": response.doc('HTML>BODY#presc>DIV.main>DIV.prices_box.wid980.clearfix>DIV.detail_box>DL.assort.tongyong>DD>A').text(),
        }
    def on_result(self, result):
        #print result
        if not result or not result['title']:
            return
        sql = SQL()
        sql.replace('info',**result)

 

如果报错:module :No module named mysqldb请查看mysqldb.py的位置是否正确。

如果报缺少mysql.connector请检查mysql连接库是否安装正确,下载地址http://ftp.ntu.edu.tw/MySQL/Downloads/Connector-Python/

转载自:http://www.pyspider.cn/jiaocheng/pyspider-to-mysql-5.html