python爬知識星球付費數據_用python爬取知識星球

去年我們做過一個叫「學長問答」的社群活動,里面沉淀了大量有價值的互動信息,后來因為各種原因終止了。今天和涂騰聊起來,覺得這些信息就這么沉寂了太浪費。所以就試著用python爬取了知識星球的內容。

這個過程又學習了一些新的知識,已經在代碼中以批注的形式寫出。但還有一個沒有解決的問題,就是一個提問底下可以跟好幾個評論,我暫時還不能在輸出結果里將「一個提問+n個評論」以整體的形式給出,而只能把評論的信息以一個字典的形式展現,這算是沒有爬取的太徹底。將來再看看有沒有新的解決方法。

import requests

import json

import urllib

import csv

#頭信息。網站只提供掃碼登陸的方式,沒有賬號密碼。我以為應該比較麻煩,但在header信息里找到了Authorization信息之后,直接可以保持登陸狀態了。

# 令一個標志是直接在瀏覽器里訪問內頁網址的話,瀏覽器的報錯是“{"succeeded":false,"code":401,"info":"","resp_data":{}}”,這個很像原來node.js的數據中心沒有登陸的報錯,而數據中心的模擬登陸也是通過在header中添加Authorization來實現的。

headers = {

'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36',

'Referer': 'https://wx.zsxq.com/dweb/',

'Authorization': '51EC09CA-6BCC-8847-4419-FA04A2FC9E00'

}

#打開并寫入csv文件

f = open('/Users/damo/Desktop/wendatuan.csv', 'w+')

writer = csv.writer(f)

writer.writerow(['created_time','ask_name','ask_content','comment'])

#定義爬取信息的函數主體

def get_info(url):

res = requests.get(url,headers = headers)

json_data = json.loads(res.text)

datas = json_data['resp_data']['topics']

for data in datas:

if 'talk' in data.keys(): # 判斷json中是否包含 talk 這個鍵

ask_name = data['talk']['owner']['name']

ask_content = data['talk']['text']

else:

ask_name = ''

ask_content = ''

if 'show_comments' in data.keys():

comment = data['show_comments']

else:

comment = ''

created_time = data['create_time']

writer.writerow([created_time,ask_name,ask_content,comment])

# 截止到前面的代碼,已經可以實現一個頁面的爬取。下面的代碼內容主要任務是實現“如何自動實現多頁面爬取”

# 多頁面的爬取是通過Network中Query String Parameters來實現的:這里提供兩個參數,觀察之后發現count是固定值,而end_time和網址最后的時間是一樣的。

# 只不過在網頁中用到了 urlencode的轉化,這部分是新學習的知識。

# 在這個爬蟲案例中,網頁構造的核心邏輯是“上一組最后一個數據的創建時間剛好是下一組數據訪問網址中的一個參數”,以此來構造循環抓取的網址

end_time = datas[19]['create_time']

url_encode = urllib.parse.quote(end_time) # urlencode,將網址中的文本轉化

next_url = 'https://api.zsxq.com/v1.10/groups/518282858584/topics?count=20&end_time='+url_encode # 通過觀察構造下一組數據的網址

get_info(next_url) # 這里比較巧,直接在函數內部再次調用函數,從而實現不斷的自循環

if __name__ == '__main__':

url = 'https://api.zsxq.com/v1.10/groups/518282858584/topics?count=20'

get_info(url)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/272800.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/272800.shtml
英文地址,請注明出處:http://en.pswp.cn/news/272800.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

HTML學習(1)

1、縮寫和首字母縮寫<abbr><acronym> <abbr title"etcetera">etc.</abbr> <acronym title"World Wide Web">WWW</acronym> 2、塊引用&#xff08;短&#xff09; <p>A: <q>B</q>C</p> 顯示結…

常用的7個SQl優化技巧

作為程序員經常和數據庫打交道的時候還是非常頻繁的&#xff0c;掌握住一些Sql的優化技巧還是非常有必要的。下面列出一些常用的SQl優化技巧&#xff0c;感興趣的朋友可以了解一下。1、注意通配符中Like的使用以下寫法會造成全表的掃描&#xff0c;例如&#xff1a;select id,n…

toolbar java_Java ToolBar.layout方法代碼示例

import org.eclipse.swt.widgets.ToolBar; //導入方法依賴的package包/類protected ToolBar createToolbar() {final ToolBar t new ToolBar(composite, SWT.FLAT | SWT.LEFT | SWT.HORIZONTAL | SWT.WRAP);final GridData d new GridData(SWT.FILL, SWT.TOP, false, false);…

Visual Studio常用的快捷鍵整理

微軟的開發工具Visual Studio作為DoNet開發者來說是必備神器&#xff0c;該開發工具內置了很多的開發快捷鍵&#xff0c;熟悉了這些開發快捷鍵&#xff0c;對于程序員來說事半功倍&#xff0c;所以在這里整理一下&#xff0c;版本是vs2012以上&#xff0c;目前小編列出了自己覺…

win7旗艦版6l打印機咋安驅動_在w7旗艦版上怎么安裝HPlaserjet6L打印機?

您好&#xff0c;感謝您選擇惠普產品。首先6L產品只有并口線&#xff0c;但是現在win 7 電腦基本都沒有并口&#xff0c;有可能是您使用了轉接usb設備&#xff0c;但是產品在出廠的時候會對產品作測試&#xff0c;測試的結果是不建議使用轉接設備或者是延長設備&#xff0c;以免…

收集一些工作中常用的經典SQL語句

作為一枚程序員來說和數據庫打交道是不可避免的&#xff0c;現收集一下工作中常用的SQL語句&#xff0c;希望能給大家帶來一些幫助&#xff0c;當然可能不全面&#xff0c;歡迎補充&#xff01;1、執行插入語句&#xff0c;獲取自動生成的遞增的ID值INSERT INTO SysRole (RoleN…

ascii modbus vc源碼_MODBUS ASCII及MODBUS RTU通訊

代碼片段和文件信息using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using System.IO.Ports;//串口using…

Asp.Net操作Cookie總結

一、什么是Cookie&#xff1f;Cookie是存儲在客戶端文件系統的文本文件或客戶端瀏覽器對話的內存中的少量數據。它主要用來跟蹤數據設置&#xff0c;例如&#xff1a;當我們要訪問一個網站網頁的時候&#xff0c;用戶請求網頁時&#xff0c;應用程序可能會首先檢查此用戶是否已…

java GUI怎么輸入_在Swing中創建Java GUI以進行表單輸入

好吧,我已經瀏覽了整個互聯網,但卻未能找到這個問題的答案,所以也許有人可以提供一些見解.我正在開發一個相對簡單的Java應用程序,它將取代目前用于系統訪問請求的Word文檔.它旨在允許表單輸入新的員工雇用信息 – 名稱,所需的訪問權限等.所以這是我的問題.嘗試使用所有文本字段…

Net中Session的用法

一、什么是Session&#xff1f;簡單來說&#xff0c;就是用戶與網站服務器建立的一個連接&#xff0c;服務器分配給一個編號。當一臺WWW服務器運行時&#xff0c;可能有若干用戶正在瀏覽運行在這臺服務器上的網站。當用戶首次與這臺WWW服務器創建連接的時候&#xff0c;它就和這…

關于Json的總結

一、什么是Json&#xff1f;JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。它使得人們很容易的進行閱讀和編寫。同時也方便了機器進行解析和生成。它是基于 JavaScript Programming Language , Standard ECMA-262 3rd Edition - December 1999的一個子集。 JS…

java 整數溢出檢測,Java如何處理整數下溢和溢出以及如何檢查它?

How does Java handle integer underflows and overflows?Leading on from that, how would you check/test that this is occurring?解決方案If it overflows, it goes back to the minimum value and continues from there. If it underflows, it goes back to the maximum…

console 程序隨系統啟動及隱藏當前程序窗口

應業務需求&#xff0c;程序需要與系統啟動而自動運行&#xff0c;故加入以下代碼&#xff0c;保存成 .bat文件 &#xff0c;雙擊執行即可 reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" /v HuazhuPushRecord /t reg_sz /d "your…

Linq用法筆記

一、什么是Linq?LINQ即Language Integrated Query(語言集成查詢)&#xff0c;LINQ是集成到C#和Visual Basic.NET這些語言中用于提供查詢數據能力的一個新特性。LINQ是一種用來進行數據訪問的編程模型&#xff0c;Linq可以用相同的語法訪問不同的數據源&#xff0c;比如xml、數…

用例圖練習

轉載于:https://www.cnblogs.com/fzuyzy/p/4925246.html

java excel row遍歷空_Java poi讀取,寫入Excel,處理row和cell可能為空的情況

首先需要導入包import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.poifs.filesystem.NPOIFSFileSystem;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;然后寫方法&a…

JQuery常用選擇器總結

作為網站開發者來說&#xff0c;不可避免的需要和頁面打交道&#xff0c;很多時候都需要去操作一些頁面上的元素&#xff0c;掌握常用的Jquery選擇器是十分有必要的。現從網上整理一些常用的Jquery選擇器&#xff0c;希望能給大家帶來一些開發上的便利。一、基本選擇器&#xf…

java 常量 內存分配_Java內存分配之堆、棧和常量池

寄存器&#xff1a;最快的存儲區&#xff0c;位于不同于其他存儲區的地方——處理器內部。寄存器的數量極其有限&#xff0c;所以寄存器由編譯器根據需求 進行分配。你不能直接控制&#xff0c;也不能在程序中感覺到寄存器存在的任何跡象。棧&#xff1a;存放基本類型的數據和對…

三種SQLServer分頁查詢語句筆記

作為程序員來說&#xff0c;與數據庫打交道是十分頻繁的分頁查詢是一個開發者必須掌握的基本知識點&#xff0c;目前整理了下面三種SQLServer分頁查詢語句的寫法&#xff0c;僅供參考。一、Top Not IN 方式&#xff08;查詢靠前的數據較快&#xff09;語法格式&#xff1a;sele…

sqlserver2008r2安裝

轉載于:https://www.cnblogs.com/sprinng/p/4932739.html