scrapy 的 field 可以设置任何类型
可以先创建一个数组变量
test = []
然后将test赋值给field 即可使用。
--------------------------------------------------------------------------------------------------------------------------------------
如果存在页面间的传值问题,可以使用 yield 中的meta
metas={'a':1,'b':2}
yield(url,callback=yourcallback,meta=metas, dont_filter=True)
--------------------------------------------------------------------------------------------------------------------------------------
数据库设置问题
例 mongo
```
#setings.py
ITEM_PIPELINES = {
'xhs.pipelines.XhsPipeline': 300,
'xhs.pipelines.XhsPipeline':300
}
MONGODB_SERVER = 'localhost'
MONGODB_PORT = 27017
MONGODB_DB = ''#你的数据库名称
MONGODB_COLLECTION = '' #你的collections
# piplines.py
import pymongo
class XhsPipeline(object):
def __init__(self):
connection = pymongo.MongoClient(
settings['MONGODB_SERVER'],
settings['MONGODB_PORT']
)
db = connection[settings['MONGODB_DB']]
self.collection = db[settings['MONGODB_COLLECTION']]
# self.coll = db[settings['MONGO_COLL']] # 获得collection的句柄
# self.db = db.primer
def process_item(self, item, spider):
pass #写你的代码
```
例 mysql 这次储存内容报错了,报错内容没有保存 ,换的mongo
```
import pymysql
def dbHandle():
conn = pymysql.connect(
host='localhost',
user='root',
passwd='',
charset='utf8',
use_unicode=True
)
return conn
class XhsPipeline(object):
def process_item(self,item,spider):
dbObject = dbHandle()
cursor = dbObject.cursor()
# sql=sql语句
sql='insert into 库.表(字段名称) values (%s,%s,%s,%s,%s)'
try:
cursor.execute(sql,(item[字段名称]))
dbObject.commit()
except Exception as e:
print(e)
dbObject.rollback()
```
为什么打出来不是代码块呢啊。。。
可以去这里看 哒哒哒社区
网友评论