用Python做一個下載器假瞬,從獲取數(shù)據(jù)到編寫GUI界面

前言

嗨嘍,大家好呀~這里是愛看美女的茜茜吶

對于廣大書蟲而言迂尝,沒有小說看是最痛苦的,你身邊有這樣的人嗎剪芥?

今天咱們分享一個小說下載器代碼垄开,打包成exe后,發(fā)給你的小伙伴也能直接使用…

案例基本實現(xiàn)思路?

一税肪、數(shù)據(jù)來源分析

明確需求:

  • 采集的網(wǎng)站是什么?

  • 采集的數(shù)據(jù)是什么?

    標題/內(nèi)容

    分析 標題/內(nèi)容 是從哪里來的

    通過瀏覽器自帶工具: 開發(fā)者工具抓包分析

  • 打開開發(fā)者工具: F12 / 鼠標右鍵點擊檢查選擇network

  • 刷新網(wǎng)頁

  • 搜索數(shù)據(jù), 找到數(shù)據(jù)包

二. 代碼實現(xiàn)步驟

  1. 發(fā)送請求, 模擬瀏覽器對于url地址發(fā)送請求
  1. 請求鏈接: https://www.***.net/1_1631/3047505.html

  2. 獲取數(shù)據(jù), 獲取服務(wù)器返回響應(yīng)數(shù)據(jù)內(nèi)容

    開發(fā)者工具: response

  3. 解析數(shù)據(jù), 提取我們想要的數(shù)據(jù)內(nèi)容

    標題/內(nèi)容

  4. 保存數(shù)據(jù), 把數(shù)據(jù)保存本地文件

代碼實現(xiàn)

在開始之前溉躲,為了防止大家代碼看不懂,我特地錄制了一套詳細教程

一益兄、單張小說下載

發(fā)送請求, 模擬瀏覽器對于url地址發(fā)送請求

獲取數(shù)據(jù), 獲取服務(wù)器返回響應(yīng)數(shù)據(jù)內(nèi)容

import requests
# 請求鏈接
url = 'https://www.****.net/1_1631/3047505.html'
# 模擬瀏覽器 headers 請求頭
headers = {
    # user-agent 用戶代理 表示瀏覽器基本身份信息
    'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
}
# 發(fā)送請求
response = requests.get(url=url, headers=headers)
# <Response [200]> 響應(yīng)對象, 表示請求成功
print(response)

print(response.text)

解析數(shù)據(jù)锻梳,提取我們想要的數(shù)據(jù)內(nèi)容。

import requests  # 數(shù)據(jù)請求
import re  # 正則
import parsel # 數(shù)據(jù)解析

# 請求鏈接
url = 'https://www.****.net/1_1631/3047505.html'
# 模擬瀏覽器 headers 請求頭
headers = {
    # user-agent 用戶代理 表示瀏覽器基本身份信息
    'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
}
# 發(fā)送請求
response = requests.get(url=url, headers=headers)
# <Response [200]> 響應(yīng)對象, 表示請求成功
print(response)

# 獲取下來response.text <html字符串數(shù)據(jù)>, 轉(zhuǎn)成可解析對象
selector = parsel.Selector(response.text)
# 提取標題
title = selector.xpath('//*[@class="bookname"]/h1/text()').get()
# 提取內(nèi)容
content = '\n'.join(selector.xpath('//*[@id="content"]/text()').getall())
print(title)
print(content)

保存數(shù)據(jù)

# 數(shù)據(jù)請求模塊 
import requests
# 正則表達式模塊
import re
# 數(shù)據(jù)解析模塊
import parsel
 
# 請求鏈接
url = 'https://www.****.net/1_1631/3047505.html'
# 模擬瀏覽器 headers 請求頭
headers = {
    # user-agent 用戶代理 表示瀏覽器基本身份信息
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
}
# 發(fā)送請求
response = requests.get(url=url, headers=headers)
# <Response [200]> 響應(yīng)對象, 表示請求成功
print(response)

# 獲取下來response.text <html字符串數(shù)據(jù)>, 轉(zhuǎn)成可解析對象
selector = parsel.Selector(response.text)
# 提取標題
title = selector.xpath('//*[@class="bookname"]/h1/text()').get()
# 提取內(nèi)容
content = '\n'.join(selector.xpath('//*[@id="content"]/text()').getall())
print(title)
print(content)
# title <文件名> '.txt' 文件格式  a 追加保存 encoding 編碼格式 as 重命名
with open(title + '.txt', mode='a', encoding='utf-8') as f:
    """
    第一章 標題
        小說內(nèi)容
    第二章 標題
        小說內(nèi)容
    """
    # 寫入內(nèi)容
    f.write(title)
    f.write('\n')
    f.write(content)
    f.write('\n')

二净捅、整本小說下載

# 數(shù)據(jù)請求模塊
import requests
# 正則表達式模塊
import re
# 數(shù)據(jù)解析模塊
import parsel
# 文件操作模塊
import os
 
 
 
 
# 請求鏈接: 小說目錄頁
list_url = 'https://www.biqudu.net/1_1631/'
# 模擬瀏覽器 headers 請求頭
headers = {
    # user-agent 用戶代理 表示瀏覽器基本身份信息
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
}
# 發(fā)送請求
html_data = requests.get(url=list_url, headers=headers).text
# 提取小說名字
name = re.findall('<h1>(.*?)</h1>', html_data)[0]
# 自動創(chuàng)建一個文件夾
file = f'{name}\\'
if not os.path.exists(file):
    os.mkdir(file)
 
# 提取章節(jié)url
url_list = re.findall('<dd> <a style="" href="(.*?)">', html_data)
# for循環(huán)遍歷
for url in url_list:
    index_url = 'https://www.****.net' + url
    print(index_url)

    headers = {
        # user-agent 用戶代理 表示瀏覽器基本身份信息
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
    }
    # 發(fā)送請求
    response = requests.get(url=index_url, headers=headers)
    # <Response [200]> 響應(yīng)對象, 表示請求成功
    print(response)

    # 獲取下來response.text <html字符串數(shù)據(jù)>, 轉(zhuǎn)成可解析對象
    selector = parsel.Selector(response.text)
    # 提取標題
    title = selector.xpath('//*[@class="bookname"]/h1/text()').get()
    # 提取內(nèi)容
    content = '\n'.join(selector.xpath('//*[@id="content"]/text()').getall())
    print(title)
    # print(content)
    # title <文件名> '.txt' 文件格式  a 追加保存 encoding 編碼格式 as 重命名
    with open(file + title + '.txt', mode='a', encoding='utf-8') as f:
        """
        第一章 標題
            小說內(nèi)容
        第二章 標題
            小說內(nèi)容
        """
        # 寫入內(nèi)容
        f.write(title)
        f.write('\n')
        f.write(content)
        f.write('\n')

三疑枯、多線程采集

# 數(shù)據(jù)請求模塊
import requests
# 正則表達式模塊
import re
# 數(shù)據(jù)解析模塊
import parsel
# 文件操作模塊
import os
# 線程池
import concurrent.futures
 
 
def get_response(html_url):
    """
    發(fā)送請求函數(shù)
    :param html_url: 請求鏈接
    :return: response響應(yīng)對象
    """
    # 模擬瀏覽器 headers 請求頭
    headers = {
        # user-agent 用戶代理 表示瀏覽器基本身份信息
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
    }
    response = requests.get(url=html_url, headers=headers)
    return response
 
 
def get_list_url(html_url):
    """
    獲取章節(jié)url/小說名
    :param html_url: 小說目錄頁
    :return:
    """
    # 調(diào)用發(fā)送請求函數(shù)
    html_data = get_response(html_url).text
    # 提取小說名字
    name = re.findall('<h1>(.*?)</h1>', html_data)[0]
    # 提取章節(jié)url
    url_list = re.findall('<dd> <a style="" href="(.*?)">', html_data)
    return name, url_list
 
 
def get_content(html_url):
    """
    獲取小說內(nèi)容/小說標題
    :param html_url: 小說章節(jié)url
    :return:
    """
    # 調(diào)用發(fā)送請求函數(shù)
    html_data = get_response(html_url).text
    # 提取標題
    title = re.findall('<h1>(.*?)</h1>', html_data)[0]
    # 提取內(nèi)容
    content = re.findall('<div id="content">(.*?)<p>', html_data, re.S)[0].replace('<br/><br/>', '\n')
    return title, content
 
 
def save(name, title, content):
    """
    保存數(shù)據(jù)函數(shù)
    :param name: 小說名
    :param title: 章節(jié)名
    :param content: 內(nèi)容
    :return:
    """
    # 自動創(chuàng)建一個文件夾
    file = f'{name}\\'
    if not os.path.exists(file):
        os.mkdir(file)
    with open(file + title + '.txt', mode='a', encoding='utf-8') as f:
        """
        第一章 標題
            小說內(nèi)容
        第二章 標題
            小說內(nèi)容
        """
        # 寫入內(nèi)容
        f.write(title)
        f.write('\n')
        f.write(content)
        f.write('\n')
    print(title, '已經(jīng)保存')
 
 
def main(home_url):
    # index_url = 'https://www.biqudu.net' + url
    title, content = get_content(html_url=home_url)
    save(name, title, content)
 
 
if __name__ == '__main__':
    url = 'https://www.biqudu.net/1_1631/'
    name, url_list = get_list_url(html_url=url)
    exe = concurrent.futures.ThreadPoolExecutor(max_workers=7)
    for url in url_list:
        index_url = 'https://www.biqudu.net' + url
        exe.submit(main, index_url)
    exe.shutdown()

四、采集排行榜所有小說

import requests
# 正則表達式模塊
import re
# 數(shù)據(jù)解析模塊
import parsel
# 文件操作模塊
import os
 
 
 
def get_response(html_url):
    """
    發(fā)送請求函數(shù)
    :param html_url: 請求鏈接
    :return: response響應(yīng)對象
    """
    # 模擬瀏覽器 headers 請求頭
    headers = {
        # user-agent 用戶代理 表示瀏覽器基本身份信息
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
    }
    response = requests.get(url=html_url, headers=headers)
    return response
 
 
def get_list_url(html_url):
    """
    獲取章節(jié)url/小說名
    :param html_url: 小說目錄頁
    :return:
    """
    # 調(diào)用發(fā)送請求函數(shù)
    html_data = get_response(html_url).text
    # 提取小說名字
    name = re.findall('<h1>(.*?)</h1>', html_data)[0]
    # 提取章節(jié)url
    url_list = re.findall('<dd> <a style="" href="(.*?)">', html_data)
    return name, url_list
 
 
def get_content(html_url):
    """
    獲取小說內(nèi)容/小說標題
    :param html_url: 小說章節(jié)url
    :return:
    """
    # 調(diào)用發(fā)送請求函數(shù)
    html_data = get_response(html_url).text
    # 提取標題
    title = re.findall('<h1>(.*?)</h1>', html_data)[0]
    # 提取內(nèi)容
    content = re.findall('<div id="content">(.*?)<p>', html_data, re.S)[0].replace('<br/><br/>', '\n')
    return title, content
 
 
def save(name, title, content):
    """
    保存數(shù)據(jù)函數(shù)
    :param name: 小說名
    :param title: 章節(jié)名
    :param content: 內(nèi)容
    :return:
    """
    # 自動創(chuàng)建一個文件夾
    file = f'{name}\\'
    if not os.path.exists(file):
        os.mkdir(file)
    with open(file + title + '.txt', mode='a', encoding='utf-8') as f:
        """
        第一章 標題
            小說內(nèi)容
        第二章 標題
            小說內(nèi)容
        """
        # 寫入內(nèi)容
        f.write(title)
        f.write('\n')
        f.write(content)
        f.write('\n')
    print(title, '已經(jīng)保存')
 
def get_novel_id(html_url):
    """
    獲取小說ID
    :param html_url: 某分類的鏈接
    :return:
    """
    # 調(diào)用發(fā)送請求函數(shù)
    novel_data = get_response(html_url=html_url).text
    selector = parsel.Selector(novel_data)
    href = selector.css('.l .s2 a::attr(href)').getall()
    href = [i.replace('/', '') for i in href]
    return href
 
 
def main(home_url):
    href = get_novel_id(html_url=home_url)
    for novel_id in href:
        novel_url = f'https://www.biqudu.net/{novel_id}/'
        name, url_list = get_list_url(html_url=novel_url)
        print(name, url_list)
        for url in url_list:
            index_url = 'https://www.biqudu.net' + url
            title, content = get_content(html_url=index_url)
            save(name, title, content)
        break
 
 
if __name__ == '__main__':
    html_url = 'https://www.biqudu.net/biquge_1/'
    main(html_url)

五蛔六、搜索小說功能

模塊

# 導(dǎo)入數(shù)據(jù)請求模塊
import requests
# 導(dǎo)入正則表達式模塊
import re
# 導(dǎo)入數(shù)據(jù)解析模塊
import parsel
# 導(dǎo)入文件操作模塊
import os
# 導(dǎo)入漂亮的表格
import prettytable as pt

發(fā)送請求函數(shù)

def get_response(html_url):
    # 模擬瀏覽器 headers 請求頭
    headers = {
        # user-agent 用戶代理 表示瀏覽器基本身份信息
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
    }
    response = requests.get(url=html_url, headers=headers)
    return response

獲取章節(jié)url/小說名

def get_list_url(html_url):
    # 調(diào)用發(fā)送請求函數(shù)
    html_data = get_response(html_url).text
    # 提取小說名字
    name = re.findall('<h1>(.*?)</h1>', html_data)[0]
    # 提取章節(jié)url
    url_list = re.findall('<dd> <a style="" href="(.*?)">', html_data)
    return name, url_list

獲取小說內(nèi)容/小說標題

def get_content(html_url):
    # 調(diào)用發(fā)送請求函數(shù)
    html_data = get_response(html_url).text
    # 提取標題
    title = re.findall('<h1>(.*?)</h1>', html_data)[0]
    # 提取內(nèi)容
    content = re.findall('<div id="content">(.*?)<p>', html_data, re.S)[0].replace('<br/><br/>', '\n')
    return title, content

保存數(shù)據(jù)函數(shù)

def save(name, title, content):
    # 自動創(chuàng)建一個文件夾
    file = f'{name}\\'
    if not os.path.exists(file):
        os.mkdir(file)
    with open(file + name + '.txt', mode='a', encoding='utf-8') as f:
        # 寫入內(nèi)容
        f.write(title)
        f.write('\n')
        f.write(content)
        f.write('\n')
    print(title, '已經(jīng)保存')

獲取小說ID

def get_novel_id(html_url):
    # 調(diào)用發(fā)送請求函數(shù)
    novel_data = get_response(html_url=html_url).text
    selector = parsel.Selector(novel_data)
    href = selector.css('.l .s2 a::attr(href)').getall()
    href = [i.replace('/', '') for i in href]
    return href

搜索功能

def search(word):
    search_url = f'https://www.****.net/searchbook.php?keyword={word}'
    # 發(fā)送請求
    search_data = get_response(html_url=search_url).text
    # 解析數(shù)據(jù), 提取小說名字/作者/小說ID
    selector = parsel.Selector(search_data)
    lis = selector.css('.novelslist2 li')
    novel_info = []
    tb = pt.PrettyTable()
    tb.field_names = ['序號', '書名', '作者', '書ID']
    num = 0
    for li in lis[1:]:
        # 小說名字
        name = li.css('.s2 a::text').get()
        novel_id = li.css('.s2 a::attr(href)').get().replace('/', '')
        writer = li.css('.s4::text').get()
        dit = {
            'name': name,
            'writer': writer,
            'novel_id': novel_id,
        }
        tb.add_row([num, name, writer, novel_id])
        num += 1
        novel_info.append(dit)
    print('你搜索的結(jié)果如下:')
    print(tb)
    novel_num = input('請輸入你想要下載的小說序號: ')
    novel_id = novel_info[int(novel_num)]['novel_id']
    return novel_id

主函數(shù)

def main(word):
    novel_id = search(word)
    novel_url = f'https://www.////.net/{novel_id}/'
    name, url_list = get_list_url(html_url=novel_url)
    print(name, url_list)
    for url in url_list:
        index_url = 'https://www.****.net' + url
        title, content = get_content(html_url=index_url)
        save(name, title, content)
        
if __name__ == '__main__':
    word = input('請輸入你搜索小說名: ')
    main(word)

六荆永、GUI界面

import tkinter as tk
from tkinter import ttk
 
 
 
def show():
    name = name_va.get()
    print('輸入的名字是:', name)
 
def download():
    name = num_va.get()
    print('輸入的序號:', name)
 
 
# 創(chuàng)建界面
root = tk.Tk()
# 設(shè)置標題
root.title('有什么問題可以跟我打招呼哦')
# 設(shè)置界面大小
root.geometry('500x500+200+200')
# 設(shè)置可變變量
name_va = tk.StringVar()
# 設(shè)置標簽
search_frame = tk.Frame(root)
search_frame.pack(pady=10)
# 設(shè)置文本
tk.Label(search_frame, text='書名 作者', font=('微軟雅黑', 15)).pack(side=tk.LEFT, padx=10)
# 設(shè)置輸入框
tk.Entry(search_frame, relief='flat', textvariable=name_va).pack(side=tk.LEFT)
 
# 序號獲取
num_va = tk.StringVar()
# 查詢下載輸入框
download_frame = tk.Frame(root)
download_frame.pack(pady=10)
# 設(shè)置文本
tk.Label(download_frame, text='小說 序號', font=('微軟雅黑', 15)).pack(side=tk.LEFT, padx=10)
# 設(shè)置輸入框
tk.Entry(download_frame, relief='flat', textvariable=num_va).pack(side=tk.LEFT)
 
# 按鈕設(shè)置
button_frame = tk.Frame(root)
button_frame.pack(pady=10)
 
# 設(shè)置查詢按鈕
tk.Button(button_frame, text='查詢', font=('微軟雅黑', 10), relief='flat', bg='#88e2d6', width=10, command=show).pack(side=tk.LEFT, padx=10)
# 設(shè)置下載按鈕
完整源碼废亭、解答、教程皆+VX:pytho8987獲取具钥,記得驗證備注“777”
tk.Button(button_frame, text='下載', font=('微軟雅黑', 10), relief='flat', bg='#88e2d6', width=10, command=download).pack(side=tk.LEFT, padx=10)
 
# 提前設(shè)置標簽名字和中文顯示內(nèi)容
columns = ('num', 'writer', 'name', 'novel_id')
columns_value = ('序號', '作者', '書名', '書ID')
tree_view = ttk.Treeview(root, height=18, show='headings', columns=columns)
# 設(shè)置列名
# 設(shè)置列名
tree_view.column('num', width=40, anchor='center')
tree_view.column('writer', width=40, anchor='center')
tree_view.column('name', width=40, anchor='center')
tree_view.column('novel_id', width=40, anchor='center')
# 給列名設(shè)置顯示的名字
tree_view.heading('num', text='序號')
tree_view.heading('writer', text='作者')
tree_view.heading('name', text='書名')
tree_view.heading('novel_id', text='書ID')
tree_view.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
# 展示界面
root.mainloop()

尾語

感謝你觀看我的文章吶~本次航班到這里就結(jié)束啦 ??

希望本篇文章有對你帶來幫助 ??豆村,有學(xué)習(xí)到一點知識~

躲起來的星星??也在努力發(fā)光,你也要努力加油(讓我們一起努力叭)骂删。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末掌动,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子宁玫,更是在濱河造成了極大的恐慌坏匪,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件撬统,死亡現(xiàn)場離奇詭異适滓,居然都是意外死亡,警方通過查閱死者的電腦和手機恋追,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門凭迹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人苦囱,你說我怎么就攤上這事嗅绸。” “怎么了撕彤?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵鱼鸠,是天一觀的道長。 經(jīng)常有香客問我羹铅,道長蚀狰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任职员,我火速辦了婚禮麻蹋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘焊切。我一直安慰自己扮授,他們只是感情好,可當我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布专肪。 她就那樣靜靜地躺著刹勃,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嚎尤。 梳的紋絲不亂的頭發(fā)上荔仁,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天,我揣著相機與錄音,去河邊找鬼咕晋。 笑死雹拄,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的掌呜。 我是一名探鬼主播滓玖,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼质蕉!你這毒婦竟也來了势篡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤模暗,失蹤者是張志新(化名)和其女友劉穎禁悠,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體兑宇,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡碍侦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了隶糕。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瓷产。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖枚驻,靈堂內(nèi)的尸體忽然破棺而出濒旦,到底是詐尸還是另有隱情,我是刑警寧澤再登,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布尔邓,位于F島的核電站,受9級特大地震影響锉矢,放射性物質(zhì)發(fā)生泄漏梯嗽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一沈撞、第九天 我趴在偏房一處隱蔽的房頂上張望慷荔。 院中可真熱鬧,春花似錦缠俺、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至偿警,卻和暖如春躏救,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工盒使, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留崩掘,地道東北人。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓少办,卻偏偏與公主長得像苞慢,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子英妓,可洞房花燭夜當晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容