scrapy 的常用代码

来源:互联网 发布:天才帽子淘宝网 编辑:程序博客网 时间:2024/06/18 04:45

1.scrapy 异步写入数据库

先在settings里面配置数据库

MYSQL_HOST = '127.0.0.1'MYSQL_PORT = 3306MYSQL_USER = 'root'MYSQL_PASSWD = '123456'MYSQL_CHARSET = 'utf8'MYSQL_DBNAME = '51job'
然后在pipiline中创建一个类

# 异步写入数据from twisted.enterprise import adbapifrom MySQLdb import cursorsclass MysqlTwistedPipeline(object):    @classmethod    def from_settings(cls,settings):        # 准备好连接数据库需要的参数        db_params = dict(            host = settings["MYSQL_HOST"],            port = settings["MYSQL_PORT"],            user = settings["MYSQL_USER"],            passwd = settings["MYSQL_PASSWD"],            charset = settings["MYSQL_CHARSET"],            db = settings["MYSQL_DBNAME"],            use_unicode = True,            # 指定游标类型            cursorclass=cursors.DictCursor        )        # 创建连接池        # 1.要连接的名称  2.连接需要的参数        db_pool = adbapi.ConnectionPool('MySQLdb',**db_params)        # 返回当前类的对象,并且把db_pool赋值给该类的对象        def __init__(self, db_pool):            # 赋值            self.db_pool = db_pool        # 处理item函数        def process_item(self, item, spider):            # 把要处理的事件进行异步处理            # 1.要处理的事件函数            # 2.事件函数需要的参数            query = self.db_pool.runInteraction(self.do_insert, item)            # 执行sql出现错误信息            query.addErrback(self.handle_error, item, spider)        # 错误的原因        def handle_error(self, failure, item, spider):            print failure        # 处理插入数据库的操作        # cursor该函数是连接数据库的函数,并且放在异步去执行,cursor执行sql语句        def do_insert(self, cursor, item):            # 1.准备sql语句            sql = ''            # 2.用cursor游标执行sql            cursor.execute(sql)
在setting中 item pipiline中取消注释放入配置信息

    'JobSpider.pipelines.MysqlTwistedPipeline':2


2.scrapy中设置随机请求头

在middlewears中设置

# 设置随机请求头from fake_useragent import UserAgentclass RandomUAMiddleware(object):    def __init__(self,crawler):        super(RandomUAMiddleware, self).__init__()        self.crawler = crawler        self.ua = UserAgent()    @classmethod    def from_crawler(cls,crawler):        return cls(crawler)    # 处理请求函数    def process_request(self,request,spider):        # 随机产生请求头        request.headers.setdefault('User-Agent',self.ua.random)
然后setting中把downloader middlewares取消注释

'JobSpider.middlewares.RandomUAMiddleware': 1,


原创粉丝点击