Ejemplo n.º 1
0
 def create_more(self, rows, ac_id):
     for i in range(1, 750):
         row = ACcommentsInfoPO()
         now_id = str(ac_id - i)
         row.set_id(now_id)
         row.set_url(ACFUN_URL + now_id)
         row.set_type("类型未知")
         row.set_title("标题不详")
         row.set_up("UP主不详")
         row.set_post_time("1992-06-17 01:02:03")
         rows.append(row)
Ejemplo n.º 2
0
 def parse(self, src):
     max = 0 #max这个字段用来查询更多的投稿
     now = 0
     rows = []#front_urlData
     while True:
         cursor = 0 #保存字符串出现的位置
         row = ACcommentsInfoPO() #保存一篇投稿抓取的内容
         
         #判断是否包含投稿链接
         cursor = src.find('<a href="')
         if cursor == -1:
             break
         
         #抓取投稿类型
         src = src[cursor+9:]
         if src[0:5] == "/v/ac":
             row.set_type("视频")
         elif src[0:5] == "/a/ac":
             row.set_type("文章")
         else:
             continue
         
         #判断是否为包含URL地址
         cursor = src.find('"')
         if cursor == -1:
             continue
         
         #查询更多的投稿
         try:
             now = int(src[src.find("/ac")+3:cursor])
             if max < now:
                 max = now
         except Exception:
             max = 0
             
         #抓取投稿URL
         row.set_id(src[src.find("/ac")+3:cursor])
         row.set_url(ACFUN + src[:cursor])
         src = src[cursor+2:]
         
         #进入一些异常判断和投稿标题分析
         if not src[:23] == 'target="_blank" title="':
             continue
         
         src = src[27:]
         cursor = src.find("&#13")
         if cursor == -1 \
         or cursor > 150:
             continue
         
         #抓取投稿标题
         row.set_title(src[:cursor])
         src = src[cursor+10:]
         
         #判断是否为包含UP信息
         cursor = src.find("&#13")
         if cursor == -1:
             continue
         
         #抓取UP信息
         row.set_up(src[:cursor])
         src = src[cursor+9:]
         
         #判断是否为包含投稿时间
         cursor = src.find(" / ")
         if cursor == -1:
             continue
         
         #抓取投稿时间
         row.set_post_time(src[:cursor])
         src = src[cursor+12:]
         
         #将row保存到rows中
         rows.append(row)
         
     self.create_more(rows, max)
     self.ACCommentsInfo.insert(rows)
     #parseTimeB = time.time() #性能统计
     #print("parse用时:" + str(parseTimeB - parseTimeA))
     return rows
Ejemplo n.º 3
0
    def parse(self, src):
        max_id = 0  # max_id这个字段用来查询更多的投稿
        now = 0
        rows = []  # front_urlData
        for data in src:
            try:
                row = ACcommentsInfoPO()  # 保存一篇投稿抓取的内容

                # 获取投稿类型
                if data[0][0:5] == "/v/ac":
                    row.set_id(data[0][5:])
                    row.set_type("视频")
                elif data[0][0:5] == "/a/ac":
                    row.set_id(data[0][5:])
                    row.set_type("文章")
                elif data[0][0:5] == "/v/ab":
                    # 番剧的id和其他不一样,加负号以示区别
                    row.set_id("-" + data[0][5:])
                    row.set_type("番剧")
                else:
                    continue

                # 获取acid和url
                row.set_url(ACFUN + data[0])

                # max_id这个字段用来查询更多的投稿,比如我从首页获取的最大投稿是ac190000,那么一会我会多抓去ac188900到ac190000的评论信息
                if max_id < int(data[0][5:]):
                    max_id = int(data[0][5:])

                # 到了解析title的时候了,A站的title写的很不规范,以下是我们需要分析的几种情况
                # 情况1 什么都有,开工的时候要注意标题后面的两种冒号: title="标题: 抗战烽火孕育新中国国歌 《义勇军进行曲》唱响世界80年&#13;UP主: 亡是公&#13;发布于 2015-05-24 20:22:26 / 点击数: 2602 / 评论数: 96"
                # 情况2 没有UP主,就一个更新时间,这种数据常见于番剧: title="标题:【四月】幻界战线 &#13;更新至:第8集 &#13;更新于:2015年05月24日"
                # 情况3 这下更牛B,连更新时间都不需要了,一般是推荐 : title="全明星热唱happy"
                # 情况4 还有这种有标题但没有UP主的                  : title="标题: 我爱你 中国(A站爱国兔子合集)"

                # 先过滤掉前面几个字
                data[1] = data[1][7:]

                # 先排除情况3
                now = data[1].find("标题")
                if now == -1:
                    row.set_title(data[1][: len(data[1]) - 1].strip())
                    # 然后开始疯狂捏造数据
                    row.set_up("UP主不详")
                    row.set_post_time("1992-06-17 01:02:03")
                else:
                    data[1] = data[1][3:]
                    # 然后排除情况2
                    now = data[1].find("更新于")
                    if now != -1:
                        now = data[1].find("&#13;")
                        # 获取title
                        row.set_title(data[1][:now].strip())
                        # 然后也开始疯狂捏造数据
                        row.set_up("UP主不详")
                        row.set_post_time("1992-06-17 01:02:03")
                    else:
                        now = data[1].find("&#13;")
                        if now != -1:
                            # 接着处理情况1
                            # 获取title
                            row.set_title(data[1][:now].strip())
                            data[1] = data[1][now + 1 :]

                            # 获取UP主
                            now = data[1].find("&#13;")
                            row.set_up(data[1][9:now])
                            data[1] = data[1][now + 1 :]

                            # 获取投稿时间
                            now = data[1].find(" / ")
                            row.set_post_time(data[1][8:now])
                        else:
                            # 最后是情况4
                            row.set_title(data[1][: len(data[1]) - 1].strip())
                            # 然后开始疯狂捏造数据
                            row.set_up("UP主不详")
                            row.set_post_time("1992-06-17 01:02:03")

            except Exception:
                continue

            rows.append(row)

        # 开始随机抓取评论
        self.create_more(rows, max_id)
        # 投稿信息单独放一张表
        self.ac_comments.db_proc.ACCommentsInfo.insert(rows)

        return list(set(rows))
Ejemplo n.º 4
0
    def parse(self, src):
        max_id = 0  #max_id这个字段用来查询更多的投稿
        now = 0
        rows = []  #front_urlData
        for data in src:
            try:
                row = ACcommentsInfoPO()  #保存一篇投稿抓取的内容

                #获取投稿类型
                if data[0][0:5] == '/v/ac':
                    row.set_id(data[0][5:])
                    row.set_type('视频')
                elif data[0][0:5] == '/a/ac':
                    row.set_id(data[0][5:])
                    row.set_type('文章')
                elif data[0][0:5] == '/v/ab':
                    #番剧的id和其他不一样,加负号以示区别
                    row.set_id('-' + data[0][5:])
                    row.set_type('番剧')
                else:
                    continue

                #获取acid和url
                row.set_url(ACFUN + data[0])

                #max_id这个字段用来查询更多的投稿,比如我从首页获取的最大投稿是ac190000,那么一会我会多抓去ac188900到ac190000的评论信息
                if max_id < int(data[0][5:]):
                    max_id = int(data[0][5:])

                #到了解析title的时候了,A站的title写的很不规范,以下是我们需要分析的几种情况
                #情况1 什么都有,开工的时候要注意标题后面的两种冒号: title="标题: 抗战烽火孕育新中国国歌 《义勇军进行曲》唱响世界80年&#13;UP主: 亡是公&#13;发布于 2015-05-24 20:22:26 / 点击数: 2602 / 评论数: 96"
                #情况2 没有UP主,就一个更新时间,这种数据常见于番剧: title="标题:【四月】幻界战线 &#13;更新至:第8集 &#13;更新于:2015年05月24日"
                #情况3 这下更牛B,连更新时间都不需要了,一般是推荐 : title="全明星热唱happy"
                #情况4 还有这种有标题但没有UP主的                  : title="标题: 我爱你 中国(A站爱国兔子合集)"

                #先过滤掉前面几个字
                data[1] = data[1][7:]

                #先排除情况3
                now = data[1].find('标题')
                if now == -1:
                    row.set_title(data[1][:len(data[1]) - 1].strip())
                    #然后开始疯狂捏造数据
                    row.set_up("UP主不详")
                    row.set_post_time("1992-06-17 01:02:03")
                else:
                    data[1] = data[1][3:]
                    #然后排除情况2
                    now = data[1].find('更新于')
                    if now != -1:
                        now = data[1].find('&#13;')
                        #获取title
                        row.set_title(data[1][:now].strip())
                        #然后也开始疯狂捏造数据
                        row.set_up("UP主不详")
                        row.set_post_time("1992-06-17 01:02:03")
                    else:
                        now = data[1].find('&#13;')
                        if now != -1:
                            #接着处理情况1
                            #获取title
                            row.set_title(data[1][:now].strip())
                            data[1] = data[1][now + 1:]

                            #获取UP主
                            now = data[1].find('&#13;')
                            row.set_up(data[1][9:now])
                            data[1] = data[1][now + 1:]

                            #获取投稿时间
                            now = data[1].find(' / ')
                            row.set_post_time(data[1][8:now])
                        else:
                            #最后是情况4
                            row.set_title(data[1][:len(data[1]) - 1].strip())
                            #然后开始疯狂捏造数据
                            row.set_up("UP主不详")
                            row.set_post_time("1992-06-17 01:02:03")

            except Exception:
                continue

            rows.append(row)

        #开始随机抓取评论
        self.create_more(rows, max_id)
        #投稿信息单独放一张表
        self.ac_comments.db_proc.ACCommentsInfo.insert(rows)

        return list(set(rows))
Ejemplo n.º 5
0
 def get_refresh_data(self, buf):
     rows = []
     for item in buf:
         row = ACcommentsInfoPO()
         row.set_type("秘密")
         row.set_id(str(item))
         row.set_url(ACFUN_URL + str(item))
         row.set_title("秘密")
         row.set_up("秘密")
         row.set_post_time("1992-06-17 01:02:03")
         rows.append(row)
     
     self.ACCommentsInfo.insert(rows)
     return rows
Ejemplo n.º 6
0
 def create_more(self, rows, ac_id):
     for i in range(1, 750):
         row = ACcommentsInfoPO()
         now_id = str(ac_id - i)
         row.set_id(now_id)
         row.set_url(ACFUN_URL + now_id)
         row.set_type("类型未知")
         row.set_title("标题不详")
         row.set_up("UP主不详")
         row.set_post_time("1992-06-17 01:02:03")
         rows.append(row)
Ejemplo n.º 7
0
 def parse(self, front_urlData, src):
     max = 0; #max这个字段用来查询更多的投稿
     now = 0;
     rows = front_urlData;
     while True:
         cursor = 0; #保存字符串出现的位置
         row = ACcommentsInfoPO(); #保存一篇投稿抓取的内容
         
         #判断是否包含投稿链接
         cursor = src.find('<a href="');
         if cursor == -1:
             break;
         
         #抓取投稿类型
         src = src[cursor+9:];
         if src[0:5] == "/v/ac":
             row.set_type("视频");
         elif src[0:5] == "/a/ac":
             row.set_type("文章");
         else:
             continue;
         
         #判断是否为包含URL地址
         cursor = src.find('"');
         if cursor == -1:
             continue;
         
         #查询更多的投稿
         now = int(src[src.find("/ac")+3:cursor]);
         if max < now:
             max = now;
             
         #抓取投稿URL
         row.set_id(src[src.find("/ac")+3:cursor]);
         row.set_url(ACFUN + src[:cursor]);
         src = src[cursor+2:];
         
         #进入一些异常判断和投稿标题分析
         if not src[:23] == 'target="_blank" title="':
             continue;
         
         src = src[27:];
         cursor = src.find("&#13;");
         if cursor == -1 \
         or cursor > 150:
             continue;
         
         #抓取投稿标题
         row.set_title(src[:cursor]);
         src = src[cursor+10:];
         
         #判断是否为包含UP信息
         cursor = src.find("&#13;");
         if cursor == -1:
             continue;
         
         #抓取UP信息
         row.set_up(src[:cursor]);
         src = src[cursor+9:];
         
         #判断是否为包含投稿时间
         cursor = src.find(" / ");
         if cursor == -1:
             continue;
         
         #抓取投稿时间
         row.set_post_time(src[:cursor]);
         src = src[cursor+12:];
         
         #将row保存到rows中
         rows.append(row);
         
     self.create_more(rows, max);
     self.ACCommentsInfo.insert(rows);
     #parseTimeB = time.time(); #性能统计
     #print("parse用时:" + str(parseTimeB - parseTimeA));
     return rows;
Ejemplo n.º 8
0
 def create_more(self, rows, id):
     for i in range(1, 50):
         row = ACcommentsInfoPO();
         now_id = str(id - i);
         row.set_id(now_id);
         row.set_url(ACFUN_URL + now_id);
         row.set_type("秘密");
         row.set_title("秘密");
         row.set_up("秘密");
         row.set_post_time("1992-06-17 01:02:03");
         rows.append(row);
Ejemplo n.º 9
0
    def parse(self, src, acinfolist):
        max_id = 0  #max_id这个字段用来查询更多的投稿
        now = 0
        rows = []  #front_urlData
        for data in src:
            try:
                row = ACcommentsInfoPO()  #保存一篇投稿抓取的内容
                #获取投稿类型
                if data[0][0:5] == '/v/ac':
                    row.set_id(data[0][5:])
                    row.set_type('视频')
                elif data[0][0:5] == '/a/ac':
                    row.set_id(data[0][5:])
                    row.set_type('文章')
                elif data[0][0:5] == '/v/ab':
                    #番剧的id和其他不一样,加负号以示区别
                    row.set_id('-' + data[0][5:])
                    row.set_type('番剧')
                else:
                    continue

                #获取acid和url
                row.set_url(ACFUN + data[0])

                #max_id这个字段用来查询更多的投稿,比如我从首页获取的最大投稿是ac190000,那么一会我会多抓去ac188900到ac190000的评论信息
                if max_id < int(data[0][5:]):
                    max_id = int(data[0][5:])

                #先过滤掉前面几个字
                data[1] = data[1][7:]

                row.set_title(data[1])
                row.set_check_time(str(datetime.datetime.now()))

            except Exception:
                continue
            if str(row.get_id()) not in acinfolist:
                rows.append(row)
                acinfolist.append(str(row.get_id()))

        #开始随机抓取评论
        if len(rows) > 0:
            self.create_more(rows, max_id, acinfolist)
            #投稿信息单独放一张表
            self.ac_comments.db_proc.ACCommentsInfo.insert(rows)

        return acinfolist
Ejemplo n.º 10
0
 def create_more(self, rows, ac_id, acinfolist):
     for i in range(1, 750):
         now_id = str(ac_id - i)
         if now_id not in acinfolist:
             row = ACcommentsInfoPO()
             row.set_id(now_id)
             row.set_url(ACFUN_URL + str(abs(int(now_id))))
             row.set_type("类型未知")
             row.set_title("标题不详")
             row.set_check_time(str(datetime.datetime.now()))
             rows.append(row)
         else:
             continue