返回首页
  主页 > 编程 > python >

python 采集文章dede织梦入库获取文章id

2019-03-16 11:27 阅读:71 来源:智宇SEO自媒体

  搞SEO不玩玩采集总是有遗憾的,所以智宇今天决定玩一把python采集dede织梦入库。

  dede文章入库设计的比较坑爹。分了3张表插入。文章主表,文章附加表,文章微表。具体代码大家可以跟踪下的dede 源码,这里不在多述。

  dede文章主表的id没设计成自动增长模式,而是通过插入文章微表获取文章微表的自动增长id,做为文章主表的id,也就是文章id。

  dede获取id是通过下面这个函数实现:

function GetIndexKey($arcrank, $typeid, $sortrank=0, $channelid=1, $senddate=0, $mid=1)
    {
        global $dsql,$senddate,$typeid2;
        if(empty($typeid2)) $typeid2 = 0;
        if(empty($senddate)) $senddate = time();
        if(empty($sortrank)) $sortrank = $senddate;
        $iquery = "
          INSERT INTO `dede_arctiny` (`arcrank`,`typeid`,`typeid2`,`channel`,`senddate`, `sortrank`, `mid`)
          VALUES ('$arcrank','$typeid','$typeid2' , '$channelid','$senddate', '$sortrank', '$mid') ";
        $dsql->ExecuteNoneQuery($iquery);
        $aid = $dsql->GetLastID();
        return $aid;
    }


  所以呢,python 采集入库的第一步,就是要获取文章id。那么我们可以把这个GetIndexKey函数,用python pymysql 改造一下,智宇这次采集涉及到的字段比较少,很多没什么用处的字段都不填充了。所以这里我们关键点是获取id,而不需要完整的填充整张表。

  python pymysql 代码如下:

def GetIndexKey(typeid,mid):
    conn = mysqlConn()
    cur = conn.cursor()
    sql = "insert into dede_arctiny(typeid,mid) values ('%d','%d')" % (typeid,mid)
    try:
        cur.execute(sql)
        aid = conn.insert_id()
        conn.commit()
        return aid
    except Exception as e:
        # 错误回滚
        conn.rollback()
    finally:
        conn.close()



返回首页