美文网首页
scrapy 爬虫之坑

scrapy 爬虫之坑

作者: 风继续吹ii | 来源:发表于2018-01-06 19:48 被阅读128次

    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()

    ```

    为什么打出来不是代码块呢啊。。。

    可以去这里看 哒哒哒社区

    相关文章

      网友评论

          本文标题:scrapy 爬虫之坑

          本文链接:https://www.haomeiwen.com/subject/kdfunxtx.html