亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用Python一鍵導出微信閱讀記錄和筆記

發布時間:2021-11-02 10:57:46 來源:億速云 閱讀:300 作者:iii 欄目:編程語言

這篇文章主要介紹“怎么用Python一鍵導出微信閱讀記錄和筆記”,在日常操作中,相信很多人在怎么用Python一鍵導出微信閱讀記錄和筆記問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么用Python一鍵導出微信閱讀記錄和筆記”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

1. 目錄結構

首先,我們先看一下整體目錄結構

├─ excel_func.py                   讀寫excel文件  ├─ pyqt_gui.py                     PyQt GUI界面  └─ wereader.py                     微信讀書相關api
  •  excel_func.py

  使用xlrd和xlwt庫對excel文件進行讀寫操作

  •  pyqt_gui.py

  使用PyQt繪制GUI界面

  •  wereader.py

  通過抓包解析獲得相關api

2. excel_func.py

def write_excel_xls(path, sheet_name_list, value):      # 新建一個工作簿      workbook = xlwt.Workbook()      # 獲取需要寫入數據的行數      index = len(value)      for sheet_name in sheet_name_list:          # 在工作簿中新建一個表格          sheet = workbook.add_sheet(sheet_name)          # 往這個工作簿的表格中寫入數據          for i in range(0, index):              for j in range(0, len(value[i])):                  sheet.write(i, j, value[i][j])      # 保存工作簿      workbook.save(path)

該函數的代碼流程為:

  1.  創建excel文件

  2.  創建表格

  3.  往表格寫入數據

3. pyqt_gui.py

class MainWindow(QMainWindow):      def __init__(self, *args, **kwargs):          super().__init__(*args, **kwargs)          self.DomainCookies = {}          self.setWindowTitle('微信讀書助手') # 設置窗口標題          self.resize(900, 600) # 設置窗口大小          self.setWindowFlags(Qt.WindowMinimizeButtonHint) # 禁止最大化按鈕          self.setFixedSize(self.width(), self.height()) # 禁止調整窗口大小          url = 'https://weread.qq.com/#login' # 目標地址          self.browser = QWebEngineView() # 實例化瀏覽器對象          QWebEngineProfile.defaultProfile().cookieStore().deleteAllCookies() # 初次運行軟件時刪除所有cookies          QWebEngineProfile.defaultProfile().cookieStore().cookieAdded.connect(self.onCookieAdd) # cookies增加時觸發self.onCookieAdd()函數          self.browser.loadFinished.connect(self.onLoadFinished) # 網頁加載完畢時觸發self.onLoadFinished()函數          self.browser.load(QUrl(url)) # 加載網頁          self.setCentralWidget(self.browser) # 設置中心窗口

該函數的代碼流程為:

  1.  新建QT窗口

  2.  實例化QWebEngineView對象

  3.  綁定self.onCookieAdd事件

  4.  綁定self.onLoadFinished事件

  5.  加載網頁   

# 網頁加載完畢事件      def onLoadFinished(self):          global USER_VID          global HEADERS         # 獲取cookies          cookies = ['{}={};'.format(key, value) for key,value in self.DomainCookies.items()]          cookies = ' '.join(cookies)          # 添加Cookie到header          HEADERS.update(Cookie=cookies)          # 判斷是否成功登錄微信讀書          if login_success(HEADERS):              print('登錄微信讀書成功!')              # 獲取用戶user_vid              if 'wr_vid' in self.DomainCookies.keys():                  USER_VID = self.DomainCookies['wr_vid']                  print('用戶id:{}'.format(USER_VID))                  # 關閉整個qt窗口                  self.close()          else:              print('請掃描二維碼登錄微信讀書...')

該函數的代碼流程為:

  1.  當網頁加載完畢時,檢測是否成功登錄微信讀書

  2.  如果成功登錄微信讀書,則關閉QT窗口,開始進行數據導出

  3.  如果失敗登錄微信讀書,則繼續等待用戶掃描二維碼   

# 添加cookies事件     def onCookieAdd(self, cookie):         if 'weread.qq.com' in cookie.domain():             name = cookie.name().data().decode('utf-8')             value = cookie.value().data().decode('utf-8')             if name not in self.DomainCookies:                 self.DomainCookies.update({name: value})

該函數的代碼流程為:

  1.  保存微信讀書網址的cookies,以便后續操作 

books = get_bookshelf(USER_VID, HEADERS) # 獲取書架上的書籍    booksbooks_finish_read = books['finishReadBooks']    booksbooks_recent_read = books['recentBooks']    booksbooks_all = books['allBooks']    write_excel_xls_append(data_dir + '我的書架.xls', '已讀完的書籍', books_finish_read) # 追加寫入excel文件    write_excel_xls_append(data_dir + '我的書架.xls', '最近閱讀的書籍', books_recent_read)  # 追加寫入excel文件    write_excel_xls_append(data_dir + '我的書架.xls', '所有的書籍', books_all)  # 追加寫入excel文件    # 獲取書架上的每本書籍的筆記    for index, book in enumerate(books_finish_read):        bookbook_id = book[0]        bookbook_name = book[1]        notes = get_bookmarklist(book[0], HEADERS)        with open(note_dir + book_name + '.txt', 'w') as f:            f.write(notes)        print('導出筆記 {} ({}/{})'.format(note_dir + book_name + '.txt', index+1, len(books_finish_read)))

該函數的代碼流程為:

  1.  調用write_excel_xls_append函數,保存書籍,并且導出筆記

4. wereader.py

def get_bookshelf(userVid, headers):      """獲取書架上所有書"""      url = "https://i.weread.qq.com/shelf/friendCommon"      params = dict(userViduserVid=userVid)      r = requests.get(url, paramsparams=params, headersheaders=headers, verify=False)      if r.ok:          data = r.json()      else:          raise Exception(r.text)      books_finish_read = set() # 已讀完的書籍      books_recent_read = set() # 最近閱讀的書籍      books_all = set() # 書架上的所有書籍      for book in data['recentBooks']:          if not book['bookId'].isdigit(): # 過濾公眾號              continue          b = Book(book['bookId'], book['title'], book['author'], book['cover'], book['intro'], book['category'])          books_recent_read.add(b)      books_all = books_finish_read + books_recent_read      return dict(finishReadBooks=books_finish_read, recentBooks=books_recent_read, allBooks=books_all)

該函數的代碼流程為:

  1.  獲取最近閱讀的書籍、已經讀完的書籍、所有書籍

  2.  過濾公眾號部分

  3.  將書籍數據保存為字典格式 

def get_bookmarklist(bookId, headers):      """獲取某本書的筆記返回md文本"""      url = "https://i.weread.qq.com/book/bookmarklist"      params = dict(bookIdbookId=bookId)      r = requests.get(url, paramsparams=params, headersheaders=headers, verify=False)      if r.ok:          data = r.json()          # clipboard.copy(json.dumps(data, indent=4, sort_keys=True))      else:          raise Exception(r.text)      chapters = {c['chapterUid']: c['title'] for c in data['chapters']}      contents = defaultdict(list)      for item in sorted(data['updated'], key=lambda x: x['chapterUid']):          # for item in data['updated']:          chapter = item['chapterUid']          text = item['markText']          create_time = item["createTime"]          start = int(item['range'].split('-')[0])          contents[chapter].append((start, text))      chapters_map = {title: level for level, title in get_chapters(int(bookId), headers)}      res = ''      for c in sorted(chapters.keys()):          title = chapters[c]          res += '#' * chapters_map[title] + ' ' + title + '\n'          for start, text in sorted(contents[c], key=lambda e: e[0]):              res += '> ' + text.strip() + '\n\n'          res += '\n'      return res

該函數的代碼流程為:

  1.  獲取某一本書籍的筆記

  2.  將返回的字符串改寫成markdown格式并輸出

如何運行

# 跳轉到當前目錄  cd 目錄名  # 先卸載依賴庫  pip uninstall -y -r requirement.txt  # 再重新安裝依賴庫  pip install -r requirement.txt -i https://pypi.tuna.tsinghua.edu.cn/simple  # 開始運行  python pyqt_gui.py

到此,關于“怎么用Python一鍵導出微信閱讀記錄和筆記”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

徐州市| 赤壁市| 稷山县| 胶州市| 驻马店市| 枞阳县| 高尔夫| 个旧市| 舞阳县| 白银市| 丰镇市| 阳东县| 天祝| 昭觉县| 顺昌县| 铜梁县| 盐池县| 乾安县| 三明市| 固始县| 桃源县| 桂东县| 福建省| 双鸭山市| 汶上县| 新干县| 克山县| 石嘴山市| 西畴县| 咸丰县| 常州市| 历史| 石阡县| 永丰县| 太仆寺旗| 务川| 六安市| 文安县| 岑溪市| 张掖市| 介休市|