正常scrapy爬虫管道数据处理1

 这种方式

 封装管道

多页相同的html抓取,允许只需要填写域名即可,返回原爬虫即可抓取

多层页面抓取

直接运行测试反扒

 第二页的数据   SPAN标签识别不了,meta传递

 

item传递

 

 管道开始

异步爬虫管道封装2

class RankxsPipeline(object):

# 初始化函数

def __init__(self, db_pool):

self.db_pool = db_pool

# 从settings配置文件中读取参数

@classmethod

def from_settings(cls, settings):

# 用一个db_params接收连接数据库的参数

db_params = dict(

host=settings['MYSQL_HOST'],

user=settings['MYSQL_USER'],

password=settings['MYSQL_PASSWORD'],

port=settings['MYSQL_PORT'],

database=settings['MYSQL_DBNAME'],

charset=settings['MYSQL_CHARSET'],

use_unicode=True,

# 设置游标类型

cursorclass=cursors.DictCursor

)

# 创建连接池

db_pool = adbapi.ConnectionPool('pymysql', **db_params)

# 返回一个pipeline对象

return cls(db_pool)

# 处理item函数

def process_item(self, item, spider):

# 把要执行的sql放入连接池

self.db_pool.runInteraction(self.insert_into, item)

# # 如果sql执行发送错误,自动回调addErrBack()函数

# 返回Item

return item

# 处理sql函数

def insert_into(self, cursor, item):

# 创建sql语句

sql = "insert into xiaoshuo(bookname,content,pic,typename) values(%s,%s,%s,%s)"

# 执行sql语句

cursor.execute(sql,(item['bookname'], item['content'], item['pic'], item['typename']))

精彩文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: