In [1]:
# -*- coding: utf-8 -*-
# chenchen19951110@sina.com

import threading
import requests
from bs4 import BeautifulSoup
from selenium import webdriver
import re
import os
import time

'''
获取html原网页文本
参数:url,即要打开的网页链接
返回值:为html网页文本
'''

class Spider:
    def __init__(self):
        self.headers = {'user-agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0'}

    def get_url_soup(self, url, encoding='gbk'):
        response = requests.get(url, headers=self.headers)
        response.raise_for_status()
    #         r.encoding = 'utf-8'
        response.encoding = encoding
        soup = BeautifulSoup(response.text, 'lxml')
        return soup
    
    def get_html_text(self, url, encoding='gbk'):
        try:
            r = requests.get(url, timeout = 30)
            r.raise_for_status()
            r.encoding = encoding
            return r.text
        except:
            return "" 

    def parse_table(self, text):
        data = []
        table = text.find('table')
        table_body = table.find('tbody')

        rows = table_body.find_all('tr')
        for row in rows:
            cols = row.find_all('td')
            cols = [ele.text.strip() for ele in cols]
            data.append([ele for ele in cols if ele])
        return data

    def text_trim(self, text):
        pattern = re.compile(',|<.+?>|\\u3000')
        text = pattern.sub(',', str(text))
        text = re.sub(',+|,+', ',', text)
        text = re.sub('^,|,$', '', text)
        return text
    
    def write_list_txt(self, data, file_name):
        assert isinstance(data, list)
        assert file_name.endswith('.txt')
        with open(file_name, 'w') as f:
            f.writelines('\n'.join(data))
        
    def write_txt(self, data, file_name):
        assert isinstance(data, str)
        assert file_name.endswith('.txt')
        with open(file_name, 'w') as f:
            f.write(data)
    
def getPhantomSoup(url):
    browser = webdriver.PhantomJS()
    browser.get(url)
    soup = BeautifulSoup(browser.page_source, 'html.parser')
    return soup

def get_url_cookie(url, encoding='gbk'):
    headers = {"Accept": "text/css,*/*;q=0.1",
               "User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0",
               "Cookie": '__cfduid=d399b76e493b94ca4ea30c25e027b331f1511504324; testcookie=yes; Hm_lvt_bc3b748c21fe5cf393d26c12b2c38d99=1511533259; Hm_lpvt_bc3b748c21fe5cf393d26c12b2c38d99=1511533491; clicktype=; need_auth_checked=yexuan2955@sina.com%3B-1%3B1511533299521%3Busername%3Dyexuan2955@sina.com%3Bisneed%3Dfalse%3Bip%3D202.119.46.229%3Bipcount%3D0%3Busernamecount%3D0; nicknameAndsign=2%257E%2529%2524%25E9%25A3%258E%25E8%25BF%2587; token=MzM4NDI0NHwxMzc3YzYyYTRkNmE2ZDA2Y2FiYTZiMzhmYzI5MmIwMXx8eWV4KioqKioqKkBzaW5hLmNvbXwzNzk3NzN8fDF8MzM4NDI0NHx85qyi6L%2BO5oKo77yM5pmL5rGf55So5oi3fDF8ZW1haWw%3D; ispayuser=3384244-1; foreverreader=3384244; sms_total=1'
              }
    r = requests.get(url, headers=headers)
#     r.raise_for_status()
    r.encoding = encoding
    soup = BeautifulSoup(r.text, 'lxml')
    return soup

In [4]:
base_url = "http://www.jjwxc.net/bookbase_slave.php?booktype=&opt=&page=1&endstr=true&orderstr=4"
spider = Spider()
base_soup = spider.get_url_soup(base_url)

In [9]:
table = base_soup.find_all('table', attrs={"class":"cytable"})[0]

In [29]:
pattern_id = re.compile('novelid=([0-9]+)"')

a = table.find_all('a', attrs={"class":"tooltip"})
[(x.string, pattern_id.findall(str(x))[0]) for x in a]
# a[0].string


Out[29]:
[('魔道祖师', '2368172'),
 ('默读', '2771073'),
 ('撒野', '2956313'),
 ('我五行缺你', '3146241'),
 ('你微笑时很美', '2911685'),
 ('我开动物园那些年', '3142278'),
 ('国色生香', '2734828'),
 ('论以貌取人的下场', '2840860'),
 ('空降热搜', '3194253'),
 ('我就是这般女子', '2973352'),
 ('你是不是喜欢我', '3126293'),
 ('人渣反派自救系统', '2228486'),
 ('不死者', '3165753'),
 ('王府宠妾', '3132729'),
 ('重生之豁然', '3028693'),
 ('影帝', '3039244'),
 ('她的小梨涡', '3070243'),
 ('天宝伏妖录', '3145450'),
 ('为了和谐而奋斗', '2852290'),
 ('给校草当假男友的日子', '2865551'),
 ('清和', '2090443'),
 ('我有药啊[系统]', '2317366'),
 ('快穿之完美命运', '2730439'),
 ('一替成名', '3190754'),
 ('人不可貌相', '3109031'),
 ('你能不能不撩我', '3043465'),
 ('快穿之打脸狂魔', '2403714'),
 ('攻略那个渣攻[快穿]', '2938340'),
 ('簪缨问鼎', '2710871'),
 ('重回初三', '2171074'),
 ('网红的娱乐生活', '3137055'),
 ('神木挠不尽', '2382799'),
 ('有姝', '2672345'),
 ('魔王', '2614438'),
 ('太监的职业素养', '2477803'),
 ('每个世界苏一遍', '2928021'),
 ('鬼知道我经历了什么', '3119919'),
 ('含桃', '2911728'),
 ('我有一个秘密', '3060858'),
 ('神造', '3101205'),
 ('丧病大学', '2995809'),
 ('助理建筑师', '2645518'),
 ('不谈恋爱就去死', '3212959'),
 ('读者和主角绝逼是真爱', '1722952'),
 ('他站在时光深处', '2964342'),
 ('有匪', '2595385'),
 ('首辅养成手册', '2691265'),
 ('杀破狼', '2322969'),
 ('知否?知否?应是绿肥红瘦', '931329'),
 ('嫡长孙', '2950794')]

In [174]:
spider = Spider()
novel_id = 2368172
url = 'http://www.jjwxc.net/onebook.php?novelid={}'.format(novel_id)
# soup = getPhantomSoup(url)
soup = getPhantomSoup(url)

In [6]:
novel_title = soup.title.get_text()

In [27]:
# 需求一:文案

des = soup.find_all('div', attrs={'id':"novelintro", 'itemprop':"description"})[0]
result_desp = spider.text_trim(des)
if not os.path.exists('save/' + novel_title + '/task1'):
    os.makedirs('save/' + novel_title + '/task1')
spider.write_txt(result_desp, 'save/' + novel_title + '/task1/description.txt')

In [28]:
# 需求一:标签

# soup.find_all('div', attrs={"class":"smallreadbody"})[1]
result_tag = [x.get_text() for x in soup.find_all('font', attrs={"color":"#FF0000"})]
spider.write_list_txt(result_tag, 'save/' + novel_title + '/task1/tags.txt')

In [29]:
# 需求一:关键字

result_keywords = soup.find_all('span', attrs={"class":"bluetext"})[0].get_text()
spider.write_txt(result_keywords, 'save/' + novel_title + '/task1/keywords.txt')

In [30]:
# 需求一:基本信息

def extract_info(text):
    filter_pattern = re.compile('<.+?>|\s')
    text = filter_pattern.sub(',', str(text))
    text = re.sub('^,+|,+$', '', text)
    text = re.sub(',+', ',', text)
    text = re.split(',', text)
    result = ''.join(text[1:])
    return result

info = soup.find_all('ul', attrs={"class":"rightul", "name":"printright"})[0].find_all('li')
result_info = [extract_info(x) for x in info]
# for i,x in enumerate(info):
#     print(i, extract_info(x))
spider.write_list_txt(result_info, 'save/' + novel_title + '/task1/basic_info.txt')

In [31]:
# 需求一:地雷
text = soup.find_all("div", attrs={"id":"ticketsrank_box"})[0]

result_mine = ['\t'.join(x) for x in spider.parse_table(text)]
spider.write_list_txt(result_mine, 'save/' + novel_title + '/task1/mine.txt')
# text

In [34]:
# 需求二:章节信息

if not os.path.exists('save/' + novel_title + '/task2'):
    os.makedirs('save/' + novel_title + '/task2')
raw_table = soup.find_all("meta", attrs={"itemprop":"dateModified"})[0]
chapter_table = spider.parse_table(raw_table)[3:]
result_chap_table = ['\t'.join(x) for x in chapter_table]
spider.write_list_txt(result_chap_table, 'save/' + novel_title + '/task2/chapter_table.txt')

In [35]:
# 需求二:成绩
score = soup.find_all("td", attrs={"colspan":"6", "class":"sptd"})[1]
text = score.get_text().strip()
text = re.sub('\n|\u3000', '', text)
result = re.split('\s+', text)
spider.write_list_txt(result, 'save/' + novel_title + '/task2/score.txt')

In [123]:
# 需求三:评论正文,客户端

comment_url = "http://www.jjwxc.net/comment.php?novelid={}&page=1".format(novel_id)
comment_soup = getPhantomSoup(comment_url)
print(comment_url)


http://www.jjwxc.net/comment.php?novelid=2368172&page=1

In [124]:
# 需求三:评论正文,客户端

def extract_single_reply(soup):
    try:
        info = spider.text_trim(re.findall('<div class="replybody">(.+?)<font color="#ABABAB">', str(soup))[0])
    except:
        info = "error"
    try:
        content = re.findall('</font><br>(.+?)<br><br>', str(soup))[0]
    except:
        content = "error"
    try:
        device = soup.find("font", attrs={"color":"#009900", "size":"2"}).get_text()
    except:
        device = "error"
    return '\t'.join([info, content, device])

def extract_all_reply(soup):
    re_list = soup.find_all('div', attrs={"class":"replybody"})
    result = [extract_single_reply(x) for x in re_list]
    return '\t'.join(result)

def extract_comment(soup):
    target = soup.find("div", attrs={"class":"readbody"})
    try:
        device = target.find("font").get_text()
    except:
        device = "error"
    comment = re.sub(device, "", target.get_text().strip())
    try:
        user_name = soup.find('a', attrs={"target":"_blank"}).get_text()
    except:
        user_name = "error"
    try:
        user_id = re.findall('readerid=([0-9]+)$', soup.find('a', attrs={"target":"_blank"})['href'])[0]
    except:
        user_id = "error"
    try:    
        time_stamp = re.findall('发表时间:(.+?)<font', str(soup.find("span", attrs={"class":"coltext"})))[0].strip()
    except:
        time_stamp = "error"
    main_result = '\t'.join([user_name, user_id, comment, device, time_stamp])
    if soup.find('div', attrs={"class":"replybody"}):
        main_result = main_result + '\t' + extract_all_reply(soup)
    return main_result

comments = comment_soup.find_all("div", attrs={"id":re.compile("comment_[0-9]{6}")})

In [125]:
for i,x in enumerate(comments):
    print(i, extract_comment(x))


0 江山剁手	10716163	全书所有人,你们把谢谢你和对不起这两句话诠释的很不吉利啊!	此评论发自晋江APP	2017-11-23 17:59:02
1 后排围观	19288251	玫瑰开在九月里,我的心中只有你,好想和你在一起,一颗地雷送给你!	error	2017-11-23 17:57:15
2 26429798	26429798	求更新,求速肥,来颗地雷激发作者潜能吧!	此评论发自晋江APP	2017-11-23 17:55:25
3 汪叽家的wifi	25071896	地雷恒久远,一颗永流传!	此评论发自晋江APP	2017-11-23 17:51:36
4 汪叽家的wifi	25071896	作者更文辛苦了,来一个地雷提提神吧!	此评论发自晋江APP	2017-11-23 17:51:28
5 汪叽家的wifi	25071896	投一颗地雷,表达对你的爱如同滔滔江水连绵不决、又如黄河泛滥一发不可收拾!	此评论发自晋江APP	2017-11-23 17:51:19
6 汪叽家的wifi	25071896	投一颗地雷,表达对你的爱如同滔滔江水连绵不决、又如黄河泛滥一发不可收拾!	此评论发自晋江APP	2017-11-23 17:51:08
7 汪叽家的wifi	25071896	有人节操好,有人人品好,有人智商好……但是……我心情好,砸你个地雷,不要潜水了出来码字吧~~~	此评论发自晋江APP	2017-11-23 17:50:59
8 汪叽家的wifi	25071896	走,地雷来一发! 	此评论发自晋江APP	2017-11-23 17:50:49
9 唐馨悦	21577337	唉!看到这里,羡羡此时这样各种作死,以后要后悔不迭的。其实觉得金凌很孤单。在对羡羡的时候他的直觉是出奇地准的。情绪也出奇地复杂。他明明是最有理由恨羡羡的。可是他却从来没有真正害过羡。反而还在无意维护羡。金凌其实很懂事的。也很孤单。	此评论发自晋江APP	error	[1楼] 网友:半夏麦冬,打分:0,发表时间:2017-11-23 17:48:24	对,特别心疼金陵,他就像一个孩子一样,眼巴巴的羡慕着那些有人宠有人疼有人温声软语关心的同伴,他其实特别渴望被爱,嘴还硬的要死	此评论发自晋江APP
10 魏无羡在我身下喘	22308455	地雷恒久远,一颗永流传!	此评论发自晋江APP	2017-11-23 17:45:41
11 半夏麦冬	24999712	来迟了,没看到车,哭唧唧!有谁能载我一路吗?	此评论发自晋江APP	2017-11-23 17:43:07
12 凉	24414306	我有一个朋友,他才叫演技精湛	此评论发自晋江APP	error	error	error	此评论发自晋江APP	error	error	此评论发自晋江APP	error	error	此评论发自晋江APP	error	error	此评论发自晋江APP
13 清亻瞳	21001261	默默的问一句还有车车吗?	此评论发自晋江APP	2017-11-23 17:20:43
14 江山剁手	10716163	有话别说,好好动手哈哈哈哈哈哈	此评论发自晋江APP	error
15 后排围观	19288251	玫瑰开在九月里,我的心中只有你,好想和你在一起,一颗地雷送给你!	error	error
16 行板清歌	21667466	孩儿们哈哈哈哈哈哈,仿佛花果山孙猴子在和一堆猴子喊话。说起来这时候羡羡就开始狐假虎威,“给你们含光君知道,要你们好看!”“罚。该罚!不罚不长记性。”哈哈哈可以想象之后还会有不少这种场面	此评论发自晋江APP	2017-11-23 17:14:25
17 江山剁手	10716163	蓝大和金陵不约而同的眺望远方,哈哈哈哈哈哈哈哈哈哈哈哈哈哈	此评论发自晋江APP	error
18 后排围观	19288251	玫瑰开在九月里,我的心中只有你,好想和你在一起,一颗地雷送给你!	error	error
19 后排围观	19288251	玫瑰开在九月里,我的心中只有你,好想和你在一起,一颗地雷送给你!	error	error

In [178]:
# 需求四

raw_table = soup.find_all("meta", attrs={"itemprop":"dateModified"})[0]
chapter_info = raw_table.find_all("tr", attrs={"itemprop":["chapter", "chapter newestChapter"]})
for i,x in enumerate(chapter_info):
    try:
        href = x.a['href']
    except:
        href = x.a['rel'][0]
#     print(href)
    chapter_table[i].append(href)

In [183]:
chapter_table[118]


Out[183]:
['119',
 '外二篇:香炉 2[VIP]',
 '=V=',
 '4903',
 '2016-08-11 16:26:04',
 'http://my.jjwxc.net/onebook_vip.php?novelid=2368172&chapterid=119']

In [147]:
def get_text_writer(chap_url):
    if re.findall('vip', chap_url):
        chap_soup = get_url_cookie(chap_url)
        chap_text = str(chap_soup.find_all("div", attrs={"class":"noveltext"})[0])
        chap_text = chap_text.split('<div id="show"></div>')[1]
        chap_text = chap_text.split('<div')[0]
        result_text = spider.text_trim(chap_text)
    else:
        chap_soup = spider.get_url_soup(chap_url)
        chap_text = str(chap_soup.find_all("div", attrs={"class":"noveltext"})[0])
        chap_text = chap_text.split('<div style="clear:both;"></div>')[1]
        chap_text = chap_text.split('<div')[0]
        result_text = spider.text_trim(chap_text)
    try:
        writer_comment = chap_soup.find_all("div", attrs={"class":"readsmall"})[0]
        result_writer = spider.text_trim(writer_comment)
    except:
        result_writer = "None"
    return result_text, result_writer

In [195]:
if not os.path.exists('save/' + novel_title + '/main'):
    os.makedirs('save/' + novel_title + '/main')
for i,chap in enumerate(chapter_table):
    chap_title = chap[1]
    chap_main, writer_main = get_text_writer(chap[-1])
    spider.write_list_txt([chap_main.strip(), writer_main], 'save/' + novel_title +'/main/' + chap[0] + chap_title + '.txt')
    print('{} : {} saved!'.format(chap[0], chap_title))
    time.sleep(3)


1 : 重生第一 saved!
2 : 泼野第二 saved!
3 : 泼野第二 2 saved!
4 : 泼野第二 3 saved!
5 : 泼野第二 4 saved!
6 : 骄矜第三 saved!
7 : 骄矜第三 2 saved!
8 : 骄矜第三 3 saved!
9 : 骄矜第三 4 saved!
10 : 骄矜第三 5 saved!
11 : 雅骚第四 saved!
12 : 雅骚第四 2 saved!
13 : 雅骚第四 3 saved!
14 : 雅骚第四 4 saved!
15 : 雅骚第四 5 saved!
16 : 雅骚第四 6 saved!
17 : 雅骚第四 7 saved!
18 : 雅骚第四 8 saved!
19 : 阳阳第五 saved!
20 : 阳阳第五 2 saved!
21 : 阳阳第五 3 saved!
22 : 阳阳第五 4 saved!
23 : 阴鸷第六 saved!
24 : 阴鸷第六 2 saved!
25 : 阴鸷第六 3[VIP] saved!
26 : 阴鸷第六 4[VIP] saved!
27 : 阴鸷第六 5[VIP] saved!
28 : 朝露第七[VIP] saved!
29 : 朝露第七 2[VIP] saved!
30 : 朝露第七 3[VIP] saved!
31 : 朝露第七 4[VIP] saved!
32 : 朝露第七 5[VIP] saved!
33 : 草木第八[VIP] saved!
34 : 草木第八 2[VIP] saved!
35 : 草木第八 3[VIP] saved!
36 : 草木第八 4[VIP] saved!
37 : 草木第八 5[VIP] saved!
38 : 草木第八 6[VIP] saved!
39 : 草木第八 7[VIP] saved!
40 : 草木第八 8[VIP] saved!
41 : 草木第八 9[VIP] saved!
42 : 草木第八 10[VIP] saved!
43 : 佼僚第九[VIP] saved!
44 : 佼僚第九 2[VIP] saved!
45 : 佼僚第九 3[VIP] saved!
46 : 狡童第十[VIP] saved!
47 : 狡童第十 2[VIP] saved!
48 : 狡童第十 3[VIP] saved!
49 : 狡童第十 4[VIP] saved!
50 : 狡童第十 5[VIP] saved!
51 : 绝勇第十一[VIP] saved!
52 : 绝勇第十一 2[VIP] saved!
53 : 绝勇第十一 3[VIP] saved!
54 : 绝勇第十一 4[VIP] saved!
55 : 绝勇第十一 5[VIP] saved!
56 : 三毒第十二[VIP] saved!
57 : 三毒第十二 2[VIP] saved!
58 : 三毒第十二 3[VIP] saved!
59 : 三毒第十二 4[VIP] saved!
60 : 三毒第十二 5[VIP] saved!
61 : 风邪第十三[VIP] saved!
62 : 风邪第十三 2[VIP] saved!
63 : 优柔第十四[VIP] saved!
64 : 优柔第十四 2[VIP] saved!
65 : 优柔第十四 3[VIP] saved!
66 : 优柔第十四 4[VIP] saved!
67 : 优柔第十四 5[VIP] saved!
68 : 优柔第十四 6[VIP] saved!
69 : 将离第十五[VIP] saved!
70 : 将离第十五 2[VIP] saved!
71 : 将离第十五 3[VIP] saved!
72 : 桀骜第十六[VIP] saved!
73 : 桀骜第十六 2[VIP] saved!
74 : 汉广第十七[VIP] saved!
75 : 汉广第十七 2[VIP] saved!
76 : 夜奔第十八[VIP] saved!
77 : 夜奔第十八 2[VIP] saved!
78 : 夜奔第十八 3[VIP] saved!
79 : 丹心第十九[VIP] saved!
80 : 丹心第十九 2[VIP] saved!
81 : 丹心第十九 3[VIP] saved!
82 : 丹心第十九 4[VIP] saved!
83 : 丹心第十九 5[VIP] saved!
84 : 丹心第十九 6[VIP] saved!
85 : 丹心第十九 7[VIP] saved!
86 : 丹心第十九 8[VIP] saved!
87 : 丹心第十九 9[VIP] saved!
88 : 丹心第十九 10[VIP] saved!
89 : 丹心第十九 11[VIP] saved!
90 : 寤寐第二十[VIP] saved!
91 : 寤寐第二十 2[VIP] saved!
92 : 寤寐第二十 3[VIP] saved!
93 : 寤寐第二十 4[VIP] saved!
94 : 寤寐第二十 5[VIP] saved!
95 : 寤寐第二十 6[VIP] saved!
96 : 寤寐第二十 7[VIP] saved!
97 : 寤寐第二十 8[VIP] saved!
98 : 恨生第二十一[VIP] saved!
99 : 恨生第二十一 2[VIP] saved!
100 : 恨生第二十一 3[VIP] saved!
101 : 恨生第二十一 4[VIP] saved!
102 : 恨生第二十一 5[VIP] saved!
103 : 恨生第二十一 6[VIP] saved!
104 : 恨生第二十一 7[VIP] saved!
105 : 恨生第二十一 8[VIP] saved!
106 : 恨生第二十一 9[VIP] saved!
107 : 藏锋第二十二[VIP] saved!
108 : 藏锋第二十二 2[VIP] saved!
109 : 藏锋第二十二 3[VIP] saved!
110 : 藏锋第二十二 4[VIP] saved!
111 : 忘羡第二十三[VIP] saved!
112 : 忘羡第二十三 2[VIP] saved!
113 : 忘羡第二十三 3[VIP] saved!
114 : 外一篇:家宴[VIP] saved!
115 : 外一篇:家宴 2[VIP] saved!
116 : 外一篇:家宴 3[VIP] saved!
117 : 外二篇:香炉[VIP] saved!
118 : 外三篇:恶友[VIP] saved!
119 : 外二篇:香炉 2[VIP] saved!

In [193]:
chapter_table[0]


Out[193]:
['1',
 '重生第一',
 '“魏无羡死了。大快人心!”',
 '1466',
 '1259389',
 '2016-08-16 15:05:28',
 'http://www.jjwxc.net/onebook.php?novelid=2368172&chapterid=1',
 'http://www.jjwxc.net/onebook.php?novelid=2368172&chapterid=1',
 'http://www.jjwxc.net/onebook.php?novelid=2368172&chapterid=1',
 'http://www.jjwxc.net/onebook.php?novelid=2368172&chapterid=1']

In [135]:
# 需求六
user_href = 'http://www.jjwxc.net/onereader.php?readerid=26429798'
user_soup = getPhantomSoup(user_href)

In [137]:
# 需求六:最近订阅的作品
user_soup
recent_books = user_soup.find_all("div", attrs={"id":"load_show_vipServer"})[0]
spider.parse_table(recent_books)[1::2]


Out[137]:
[['《魔道祖师》',
  '《魔道祖师》',
  '原创-纯爱-架空历史-爱情',
  '正剧',
  '已完成',
  '639675',
  '5,084,153,344',
  '2015-10-31 19:15:00']]

In [140]:
# 需求六:收藏的作品
url = 'http://www.jjwxc.net/onereader_ajax.php?readerid=20981786&action=show_novelsa'
# favo_soup = BeautifulSoup(getHTMLText(url), 'html.parser')
favo_soup = spider.get_url_soup(url, encoding='utf-8')

In [141]:
data = []
rows = favo_soup.find_all('tr')
for row in rows:
    cols = row.find_all('td')
    cols = [ele.text.strip() for ele in cols]
    data.append([ele for ele in cols if ele])
# favo_soup
data


Out[141]:
[['我开放的收藏分类', '类型', '风格', '进度', '字数', '积分', '发表时间'],
 ['【瑰宝】  [开放的分类]'],
 ['《魔道祖师》\n\xa0\xa0\xa0\xa0                            \n\n\n整文收藏',
  '原创-纯爱-架空历史-爱情',
  '正剧',
  '已完成',
  '639675',
  '5,078,690,304',
  '2015-10-31 19:15:00'],
 ['《人渣反派自救系统》\n\xa0\xa0                            \n\n\n整文收藏',
  '原创-纯爱-架空历史-爱情',
  '轻松',
  '已完成',
  '432692',
  '1,495,851,776',
  '2014-09-21 20:10:32'],
 ['【等待】  [开放的分类]'],
 ['《爱你怎么说》\n\n\n\n整文收藏',
  '原创-纯爱-近代现代-爱情',
  '轻松',
  '连载中',
  '9483',
  '301,582,208',
  '2017-11-19 09:30:00'],
 ['《迷你人》\n\n\n\n整文收藏',
  '原创-纯爱-幻想未来-爱情',
  '正剧',
  '连载中',
  '30016',
  '231,008,112',
  '2017-10-31 21:00:00'],
 ['《天官赐福》\n\xa0                            \n\n\n第1章 天官赐福第87章 镀金身鼎力挽天颓第66章 人上为人人下为人整文收藏',
  '原创-纯爱-架空历史-爱情',
  '轻松',
  '连载中',
  '402465',
  '8,677,044,224',
  '2017-06-16 18:01:18'],
 ['《情终》\n\n\n\n整文收藏',
  '原创-纯爱-近代现代-爱情',
  '正剧',
  '连载中',
  '252866',
  '38,825,040',
  '2016-04-19 21:03:32'],
 ['【随便看看】  [开放的分类]'],
 ['《疯狗加三》\n\n\n\n整文收藏',
  '原创-纯爱-架空历史-奇幻',
  '轻松',
  '连载中',
  '16696',
  '161,905,072',
  '2017-11-13 06:13:00'],
 ['《破云》\n\n\n\n整文收藏',
  '原创-纯爱-近代现代-侦探',
  '正剧',
  '连载中',
  '0',
  '96,716,208',
  '2017-11-06 14:45:20'],
 ['《致猪精:真情实感的追星会遭报应》\n\n\n\n整文收藏',
  '原创-言情-近代现代-爱情',
  '暗黑',
  '连载中',
  '45166',
  '7,240,928',
  '2017-10-09 19:05:50'],
 ['《源血》\n\n\n\n整文收藏',
  '原创-纯爱-近代现代-奇幻',
  '轻松',
  '连载中',
  '157573',
  '308,805,120',
  '2017-10-10 11:00:00'],
 ['《他夏了冬天》\n\n\n\n整文收藏',
  '原创-纯爱-近代现代-爱情',
  '轻松',
  '连载中',
  '66785',
  '187,615,744',
  '2017-10-10 10:00:00'],
 ['《不要物种歧视》\n\n\n\n整文收藏',
  '原创-纯爱-近代现代-爱情',
  '轻松',
  '连载中',
  '391145',
  '4,691,607,552',
  '2017-07-26 14:26:56'],
 ['《我就喜欢你作死的样子》\n\n\n\n整文收藏',
  '原创-纯爱-近代现代-爱情',
  '正剧',
  '连载中',
  '148579',
  '163,970,288',
  '2017-09-20 11:06:06'],
 ['《空降热搜》\n\n\n\n整文收藏',
  '原创-纯爱-近代现代-爱情',
  '轻松',
  '已完成',
  '870101',
  '7,140,744,704',
  '2017-06-17 12:00:00'],
 ['《矮人在未来》\n\n\n\n整文收藏',
  '原创-纯爱-幻想未来-爱情',
  '轻松',
  '连载中',
  '784702',
  '423,724,512',
  '2017-08-08 20:00:00'],
 ['《我们的男神崩坏了》\n\n\n\n整文收藏',
  '原创-纯爱-近代现代-爱情',
  '轻松',
  '已完成',
  '308477',
  '275,927,872',
  '2017-06-30 12:00:00'],
 ['【完结了】  [开放的分类]'],
 ['《小笨蛋》\n\n\n\n整文收藏',
  '原创-纯爱-近代现代-爱情',
  '正剧',
  '已完成',
  '294938',
  '373,415,328',
  '2016-02-27 21:40:00']]