国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

使用Python爬取小紅書筆記與評(píng)論(僅供學(xué)習(xí)交流)

這篇具有很好參考價(jià)值的文章主要介紹了使用Python爬取小紅書筆記與評(píng)論(僅供學(xué)習(xí)交流)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

【作者主頁(yè)】:吳秋霖
【作者介紹】:Python領(lǐng)域優(yōu)質(zhì)創(chuàng)作者、阿里云博客專家、華為云享專家。長(zhǎng)期致力于Python與爬蟲領(lǐng)域研究與開(kāi)發(fā)工作!
【作者推薦】:對(duì)JS逆向感興趣的朋友可以關(guān)注《爬蟲JS逆向?qū)崙?zhàn)》,對(duì)分布式爬蟲平臺(tái)感興趣的朋友可以關(guān)注《分布式爬蟲平臺(tái)搭建與開(kāi)發(fā)實(shí)戰(zhàn)》
還有未來(lái)會(huì)持續(xù)更新的驗(yàn)證碼突防、APP逆向、Python領(lǐng)域等一系列文章

1. 寫在前面

??除了對(duì)x-s、x-s-common進(jìn)行分析實(shí)現(xiàn)加密算法,還有之前文章中提到的通過(guò)JS注入免扣加密算法的方式獲取加密參數(shù)

加密分析及算法文章請(qǐng)閱讀這篇文章:x-s、x-s-common加密分析(2024-01-10更新)

x-s的加密算法為JS實(shí)現(xiàn)、x-s-common的加密算法為Python實(shí)現(xiàn)

2. 分析加密入口

小紅書rpc爬蟲 python,Python爬蟲實(shí)戰(zhàn),javascript,爬蟲,wpf

可以看到上圖斷點(diǎn)處l包含x-s跟x-t的返回,看下面這行代碼:

l = (a && void 0 !== window._webmsxyw ? window._webmsxyw : encrypt_sign)(s, i) || {};

window._webmsxyw函數(shù)內(nèi)即加密邏輯,在自執(zhí)行函數(shù)內(nèi)部并添加在了window屬性中

該函數(shù)接受兩個(gè)參數(shù),s是api接口的路徑,i是請(qǐng)求提交的參數(shù)

3. 使用JS注入

可以使用Playwright或者pyppeteer實(shí)現(xiàn),通過(guò)瀏覽器的JavaScript注入來(lái)獲取加密參數(shù),代碼實(shí)現(xiàn)分別如下

Playwright方式:

import asyncio
from playwright.async_api import async_playwright

async def main():
    async with async_playwright() as playwright:
        browser = await playwright.chromium.launch(headless=True)
        page = await browser.new_page()
		# 注入stealth.min.js腳本
        await page.add_init_script(path="stealth.min.js")
        url = "" # 請(qǐng)求api
        data = "" # 請(qǐng)求參數(shù)

        # 執(zhí)行JavaScript
        encrypt_params = await page.evaluate('([url, data]) => window._webmsxyw(url, data)', [url, data])
        local_storage = await page.evaluate('() => window.localStorage')

        print(encrypt_params)
        print(local_storage)

        await browser.close()
        
asyncio.run(main())

pyppeteer方式:

import asyncio
from pyppeteer import launch

async def main():
    browser = await launch(headless=True)
    page = await browser.newPage()

    # 注入stealth.min.js腳本
    stealth_script = open("stealth.min.js", "r").read()
    await page.evaluateOnNewDocument(stealth_script)

    url = ""  # 請(qǐng)求api
    data = ""  # 請(qǐng)求參數(shù)

    # 執(zhí)行JavaScript
    encrypt_params = await page.evaluate('([url, data]) => window._webmsxyw(url, data)', [url, data])
    local_storage = await page.evaluate('() => window.localStorage')

    print(encrypt_params)
    print(local_storage)

    await browser.close()

asyncio.get_event_loop().run_until_complete(main())

上面的stealth.min.js腳本注入的作用是為了防止被檢測(cè)的,另外cookie參數(shù)需要設(shè)置屬性來(lái)避免Web端出現(xiàn)滑動(dòng)驗(yàn)證碼

當(dāng)然,這個(gè)都是爬蟲最終工程化需要考慮的事情,這里主要還是通過(guò)非逆向分析的方式去解決加密參數(shù)問(wèn)題!

window.localStorage在之前加密分析的文章中已經(jīng)詳細(xì)介紹了,localStorage是一個(gè)在瀏覽器中存儲(chǔ)鍵值對(duì)的API,通常用于持久化地存儲(chǔ)數(shù)據(jù),所需的b1參數(shù)就在其中

JS注入方式運(yùn)行結(jié)果如下所示:
小紅書rpc爬蟲 python,Python爬蟲實(shí)戰(zhàn),javascript,爬蟲,wpf

x-s跟x-t的加密參數(shù)通過(guò)注入的方式能夠直接拿到,但是x-s-common的參數(shù)仍需要通過(guò)sign的方法加密計(jì)算生成!

Python版本的sign加密算法在之前的加密分析文章中已提供!JS注入的方式主要為了獲取這些個(gè)參數(shù):x-s、x-t、b1

JS注入的方式對(duì)于有前端基礎(chǔ)及經(jīng)驗(yàn)的小伙伴,就很簡(jiǎn)單了。通過(guò)上面的方式獲取到所有的加密參數(shù)后,接下來(lái)就是爬蟲的工程化

4. 爬蟲工程化

以筆記搜索為例,爬蟲代碼實(shí)現(xiàn)如下:

import json
import httpx
from typing import Dict, Optional

async def request(self, method, url, **kwargs) -> Dict:
    async with httpx.AsyncClient(proxies=self.proxies) as client:
        response = await client.request(
            method, url, timeout=self.timeout,
            **kwargs
        )   
    data: Dict = response.json()
    if data["success"]:
        return data.get("data", data.get("success", {}))
    elif data["code"] == self.IP_ERROR_CODE:
        raise IPBlockError(self.IP_ERROR_STR)
    else:
        raise DataFetchError(data.get("msg", None))

async def unified_request(self, 
	uri: Optional[str] = None, 
	data: Optional[dict] = None,
	keyword: Optional[str] = None,
	page: Optional[int] = 1, 
	page_size: Optional[int] = 20,
	sort: Optional[SearchSortType] = SearchSortType.GENERAL,
	note_type: Optional[SearchNoteType] = SearchNoteType.ALL) -> Dict:
    
    if keyword:
        _host = "https://edith.xiaohongshu.com"
        uri = "/api/sns/web/v1/search/notes"
        data = {
            "keyword": keyword,
            "page": page,
            "page_size": page_size,
            "search_id": get_search_id(),
            "sort": sort.value,
            "note_type": note_type.value
        }
    elif uri and data:
        headers = await self._pre_headers(uri, data)
        json_str = json.dumps(data, separators=(',', ':'), ensure_ascii=False)
        return await self.request(method="POST", url=f"{self._host}{uri}",
                                  data=json_str, headers=headers)
    else:
        raise ValueError("Either 'uri' and 'data' or 'keyword' must be provided.")

    return await request(method="POST", url=f"{_host}{uri}", data=json.dumps(data), headers=await self._pre_headers(uri, data))

最后,訂閱的小伙伴可找作者獲取開(kāi)箱即用的完整爬蟲項(xiàng)目代碼,如下:

JS注入方式筆記搜索:

小紅書rpc爬蟲 python,Python爬蟲實(shí)戰(zhàn),javascript,爬蟲,wpf

JS注入方式筆記評(píng)論:

小紅書rpc爬蟲 python,Python爬蟲實(shí)戰(zhàn),javascript,爬蟲,wpf文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-793507.html

到了這里,關(guān)于使用Python爬取小紅書筆記與評(píng)論(僅供學(xué)習(xí)交流)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Python爬蟲—爬取微博評(píng)論數(shù)據(jù)

    Python爬蟲—爬取微博評(píng)論數(shù)據(jù)

    今日,分享編寫Python爬蟲程序來(lái)實(shí)現(xiàn)微博評(píng)論數(shù)據(jù)的下載。 具體步驟如下??????: Step1 :電腦訪問(wèn)手機(jī)端微博_https://m.weibo.cn/_ Step2 :打開(kāi)一條微博_https://m.weibo.cn/detail/4907031376694279_ Step3 :URL地址中的_49070__31376694279_就是需要爬取的微博ID Step4 :將ID填寫到_main_下即可,也支

    2024年03月21日
    瀏覽(17)
  • Python如何運(yùn)用爬蟲爬取京東商品評(píng)論

    Python如何運(yùn)用爬蟲爬取京東商品評(píng)論

    打開(kāi)京東商品網(wǎng)址(添加鏈接描述) 查看商品評(píng)價(jià) 。我們點(diǎn)擊評(píng)論翻頁(yè),發(fā)現(xiàn)網(wǎng)址未發(fā)生變化,說(shuō)明該網(wǎng)頁(yè)是動(dòng)態(tài)網(wǎng)頁(yè)。 我們?cè)?瀏覽器右鍵點(diǎn)擊“檢查” ,,隨后 點(diǎn)擊“Network” ,刷新一下,在搜索框中 輸入”評(píng)論“ ,最終找到 網(wǎng)址(url) 。我們點(diǎn)擊Preview,發(fā)現(xiàn)了我們需要

    2024年02月07日
    瀏覽(23)
  • 【2023最新B站評(píng)論爬蟲】用python爬取上千條嗶哩嗶哩評(píng)論

    【2023最新B站評(píng)論爬蟲】用python爬取上千條嗶哩嗶哩評(píng)論

    您好,我是 @馬哥python說(shuō),一枚10年程序猿。 之前,我分享過(guò)一些B站的爬蟲: 【Python爬蟲案例】用Python爬取李子柒B站視頻數(shù)據(jù) 【Python爬蟲案例】用python爬嗶哩嗶哩搜索結(jié)果 【爬蟲+情感判定+Top10高頻詞+詞云圖】\\\"谷愛(ài)凌\\\"熱門彈幕python輿情分析 但我學(xué)習(xí)群中小伙伴頻繁討論

    2024年02月08日
    瀏覽(25)
  • 當(dāng)我用Python爬取了京東商品所有評(píng)論后發(fā)現(xiàn)....

    當(dāng)我用Python爬取了京東商品所有評(píng)論后發(fā)現(xiàn)....

    不知道各位網(wǎng)購(gòu)的時(shí)候,是否會(huì)去留意商品評(píng)價(jià),有些小伙伴是很在意評(píng)價(jià)的,看到差評(píng)就不想買了,而有些小伙伴則是會(huì)對(duì)差評(píng)進(jìn)行理性分析,而還有一類人不在乎這個(gè)。 當(dāng)然這都是題外話,咱們今天主要的目的是使用Python來(lái)爬取某東商品的評(píng)價(jià),并保存到CSV表格。 在進(jìn)

    2024年02月11日
    瀏覽(27)
  • python數(shù)據(jù)采集課設(shè)-京東手機(jī)評(píng)論爬取與分析

    python數(shù)據(jù)采集課設(shè)-京東手機(jī)評(píng)論爬取與分析

    1.手機(jī)評(píng)論采集,數(shù)據(jù)信息(評(píng)論,評(píng)分,用戶,評(píng)論發(fā)布時(shí)間) 爬取不同的手機(jī)評(píng)論,需要設(shè)置不同的id ?如上圖紅圈處即為手機(jī)vivo S12的id 結(jié)果展示: 2.去除停用詞以及詞云圖展示: 本節(jié)代碼對(duì)多款手機(jī)的評(píng)論進(jìn)行循環(huán)處理 此代碼需要使用的stopwords.txt文件以上傳至資源

    2024年02月15日
    瀏覽(28)
  • 【Python】爬蟲練習(xí)-爬取豆瓣網(wǎng)電影評(píng)論用戶的觀影習(xí)慣數(shù)據(jù)

    【Python】爬蟲練習(xí)-爬取豆瓣網(wǎng)電影評(píng)論用戶的觀影習(xí)慣數(shù)據(jù)

    目錄 前言 一、配置環(huán)境 1.1、 安裝Python 1.2、?安裝Requests庫(kù)和BeautifulSoup庫(kù) 1.3.、安裝Matplotlib 二、登錄豆瓣網(wǎng)(重點(diǎn)) 2.1、獲取代理 2.2、測(cè)試代理ip是否可用 2.3、設(shè)置大量請(qǐng)求頭隨機(jī)使用 2.4、登錄豆瓣網(wǎng) 三、爬取某一部熱門電影數(shù)據(jù) 3.1、爬取全部長(zhǎng)、短評(píng)論 3.2、獲取用戶

    2024年02月09日
    瀏覽(27)
  • 使用Puppeteer爬取地圖上的用戶評(píng)價(jià)和評(píng)論

    使用Puppeteer爬取地圖上的用戶評(píng)價(jià)和評(píng)論

    在互聯(lián)網(wǎng)時(shí)代,獲取用戶的反饋和意見(jiàn)是非常重要的,它可以幫助我們了解用戶的需求和喜好,提高我們的產(chǎn)品和服務(wù)質(zhì)量。有時(shí)候,我們需要從地圖上爬取用戶對(duì)某些地點(diǎn)或商家的評(píng)價(jià)和評(píng)論,這樣我們就可以分析用戶對(duì)不同地區(qū)或行業(yè)的態(tài)度和偏好。但是,如何從地圖上

    2024年02月09日
    瀏覽(19)
  • 使用selenium自動(dòng)化工具爬取微博內(nèi)容和評(píng)論

    使用selenium自動(dòng)化工具爬取微博內(nèi)容和評(píng)論

    任務(wù)需求是爬取微博的內(nèi)容和評(píng)論。一開(kāi)始我是準(zhǔn)備直接用正常的爬蟲來(lái)做,但是發(fā)現(xiàn)微博上的內(nèi)容幾乎都是動(dòng)態(tài)加載生成的。所以了解了一下就學(xué)習(xí)使用·selenium自動(dòng)化測(cè)試工具來(lái)爬取相關(guān)數(shù)據(jù)。 首先是不登錄微博,發(fā)現(xiàn)只能查看最多二十條數(shù)據(jù),這自然限制太大所以還是

    2024年02月02日
    瀏覽(17)
  • 用python語(yǔ)言爬蟲爬取微博評(píng)論--上--初步爬蟲(超詳細(xì)版,大學(xué)生不騙大學(xué)生)

    用python語(yǔ)言爬蟲爬取微博評(píng)論--上--初步爬蟲(超詳細(xì)版,大學(xué)生不騙大學(xué)生)

    目錄 一、找到頁(yè)面 ?二、學(xué)會(huì)使用檢查元素 2.1 打開(kāi)檢查元素界面 2.2 找到所有評(píng)論所在的位置 2.2.1 搜索評(píng)論 2.2.2 ?找到data表 三、基礎(chǔ)部分代碼實(shí)現(xiàn)???????? 全部已經(jīng)更完(下面兩個(gè)鏈接是中和下) https://blog.csdn.net/m0_68325382/article/details/137234661?spm=1001.2014.3001.5502 爬

    2024年04月10日
    瀏覽(34)
  • nodejs+vue+elementui學(xué)習(xí)交流和學(xué)習(xí)筆記分享系統(tǒng)

    nodejs+vue+elementui學(xué)習(xí)交流和學(xué)習(xí)筆記分享系統(tǒng)

    Node.js 是一個(gè)基于 Chrome JavaScript 運(yùn)行時(shí)建立的一個(gè)平臺(tái)。 ?前端技術(shù):nodejs+vue+elementui,視圖層其實(shí)質(zhì)就是vue頁(yè)面,通過(guò)編寫vue頁(yè)面從而展示在瀏覽器中,編寫完成的vue頁(yè)面要能夠和控制器類進(jìn)行交互,從而使得用戶在點(diǎn)擊網(wǎng)頁(yè)進(jìn)行操作時(shí)能夠正常。 可以設(shè)置中間件來(lái)響應(yīng) H

    2024年02月16日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包