最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實(shí)戰(zhàn)爬蟲之女友欲買文胸不知何色更美

 更新時(shí)間:2021年09月30日 10:21:31   作者:Dream丶Killer  
實(shí)踐來源于理論,做爬蟲前肯定要先了解相關(guān)的規(guī)則和原理,網(wǎng)絡(luò)爬蟲又稱為網(wǎng)頁蜘蛛,網(wǎng)絡(luò)機(jī)器人,更經(jīng)常的稱為網(wǎng)頁追逐者,是一種按照一定的規(guī)則,自動(dòng)地抓取萬維網(wǎng)信息的程序或者腳本。一句話概括就是網(wǎng)上信息搬運(yùn)工。本篇文章帶你深入了解,需要的朋友可以參考下

情景再現(xiàn)

今日天氣尚好,女友忽然欲買文胸,但不知何色更美,遂命吾剖析何色買者益眾,為點(diǎn)議,事后而獎(jiǎng)勵(lì)之。

本文關(guān)鍵詞

協(xié)程并發(fā)😊、IP被封😳、IP代理😏、代理被封😭、一種植物🌿

挑個(gè)“軟柿子”

打開京東,直接搜 【文胸】,挑個(gè)評(píng)論最多的

進(jìn)入詳情頁,往下滑,可以看到商品介紹啥的,同時(shí)商品評(píng)價(jià)也在這里。

在這里插入圖片描述

接下來重頭戲,F(xiàn)12 打開 開發(fā)者工具,選擇 Network,然后點(diǎn)擊全部評(píng)價(jià),抓取數(shù)據(jù)包。

請(qǐng)?zhí)砑訄D片描述

將 url 打開,發(fā)現(xiàn)確實(shí)是評(píng)論數(shù)據(jù)。

在這里插入圖片描述

單頁爬取

那我們先寫個(gè)小 demo 來嘗試爬取這頁的代碼,看看有沒有什么問題。

import requests
import pandas as pd

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.54 Safari/537.36'
}

params = {
    'callback':'fetchJSON_comment98',
    'productId':'35152509650',
    'score':'0',
    'sortType':'6',
    'page': '5',
    'pageSize':'10',
    'isShadowSku':'0',
    'rid':'0',
    'fold':'1'
}

url = 'https://club.jd.com/comment/productPageComments.action?'
page_text = requests.get(url=url, headers=headers, params=params).text
page_text

在這里插入圖片描述

數(shù)據(jù)處理

數(shù)據(jù)是獲取了,但前面多了一些沒用的字符(后面也有),很明顯不能直接轉(zhuǎn)成 json 格式,需要處理一下。

page_text = page_text[20: len(page_text) - 2]
data = json.loads(page_text)
data

在這里插入圖片描述

現(xiàn)在數(shù)據(jù)格式處理好了,可以上手解析數(shù)據(jù),提取我們所需要的部分。這里我們只提取 id(評(píng)論id)、color(產(chǎn)品顏色)、comment(評(píng)價(jià))、time(評(píng)價(jià)時(shí)間)。

import pandas as pd

df = pd.DataFrame({'id': [],
                   'color': [],
                   'comment': [],
                   'time': []})
for info in data['comments']:
    df = df.append({'id': info['id'],
                    'color': info['productColor'],
                    'comment': info['content'],
                    'time': info['creationTime']},
                   ignore_index=True)
df

在這里插入圖片描述

翻頁操作

那么接下來就要尋找翻頁的關(guān)鍵了,下面用同樣的方法獲取第二頁、第三頁的url,進(jìn)行對(duì)比。

在這里插入圖片描述

簡(jiǎn)單分析一下,page 字段是頁數(shù),翻頁會(huì)用到,值得注意的是 sortType,字面意思是排序類型,猜測(cè)排序方式可能是:熱度、時(shí)間等。經(jīng)過測(cè)試發(fā)現(xiàn) sortType=5 肯定不是按時(shí)間排序的,應(yīng)該是熱度,我們要獲取按時(shí)間排序的,這樣后期比較好處理,然后試了幾個(gè)值,最后確定當(dāng) sortType=6 時(shí)是按評(píng)價(jià)時(shí)間排序。圖中最后還有個(gè) rid=0 ,不清楚什么作用,我爬取兩個(gè)相同的url(一個(gè)加 rid 一個(gè)不加),測(cè)試結(jié)果是相同的,所以不用管它。

擼代碼

先寫爬取結(jié)果:開始想爬 10000 條評(píng)價(jià),結(jié)果請(qǐng)求過多IP涼了,從IP池整了丶代理,也沒頂住,拼死拼活整了1000條,時(shí)間不夠,如果時(shí)間和IP充足,隨便爬。經(jīng)過測(cè)試發(fā)現(xiàn)這個(gè)IP封鎖時(shí)間不會(huì)超過一天,第二天我跑了一下也有數(shù)據(jù)。下面看看主要的代碼。

主調(diào)度函數(shù)

設(shè)置爬取的 url 列表,windows 環(huán)境下記得限制并發(fā)量,不然報(bào)錯(cuò),將爬取的任務(wù)添加到 tasks 中,掛起任務(wù)。

async def main(loop):
    # 獲取url列表
    page_list = list(range(0, 1000))
    # 限制并發(fā)量
    semaphore = asyncio.Semaphore(500)
    # 創(chuàng)建任務(wù)對(duì)象并添加到任務(wù)列表中
    tasks = [loop.create_task(get_page_text(page, semaphore)) for page in page_list]
    # 掛起任務(wù)列表
    await asyncio.wait(tasks)

頁面抓取函數(shù)

抓取方法和上面講述的基本一致,只不過換成 aiohttp 進(jìn)行請(qǐng)求,對(duì)于SSL證書的驗(yàn)證也已設(shè)置。程序執(zhí)行后直接進(jìn)行解析保存。

async def get_page_text(page, semaphore):
    async with semaphore:
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.54 Safari/537.36'
        }
        params = {
            'callback': 'fetchJSON_comment98',
            'productId': '35152509650',
            'score': '0',
            'sortType': '6',
            'page': f'{page}',
            'pageSize': '10',
            'isShadowSku': '0',
            # 'rid': '0',
            'fold': '1'
        }
        url = 'https://club.jd.com/comment/productPageComments.action?'
        async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(ssl=False), trust_env=True) as session:
            while True:
                try:
                    async with session.get(url=url, proxy='http://' + choice(proxy_list), headers=headers, params=params,
                                           timeout=4) as response:
                        # 遇到IO請(qǐng)求掛起當(dāng)前任務(wù),等IO操作完成執(zhí)行之后的代碼,當(dāng)協(xié)程掛起時(shí),事件循環(huán)可以去執(zhí)行其他任務(wù)。
                        page_text = await response.text()
                        # 未成功獲取數(shù)據(jù)時(shí),更換ip繼續(xù)請(qǐng)求
                        if response.status != 200:
                            continue
                        print(f"第{page}頁爬取完成!")
                        break
                except Exception as e:
                    print(e)
                    # 捕獲異常,繼續(xù)請(qǐng)求
                    continue
        return parse_page_text(page_text)

解析保存函數(shù)

將 json 數(shù)據(jù)解析以追加的形式保存到 csv 中。

def parse_page_text(page_text):
    page_text = page_text[20: len(page_text) - 2]
    data = json.loads(page_text)

    df = pd.DataFrame({'id': [],
                       'color': [],
                       'comment': [],
                       'time': []})
    for info in data['comments']:
        df = df.append({'id': info['id'],
                        'color': info['productColor'],
                        'comment': info['content'],
                        'time': info['creationTime']},
                       ignore_index=True)

    header = False if Path.exists(Path('評(píng)價(jià)信息.csv')) else True
    df.to_csv('評(píng)價(jià)信息.csv', index=False, mode='a', header=header)
    print('已保存')

可視化

顏色分布

排名前三分別是灰粉色、黑色、裸感膚色,多的不說,自己體會(huì)哈。

在這里插入圖片描述

評(píng)價(jià)詞云圖

可以看出評(píng)價(jià)的關(guān)鍵詞大多是對(duì)上身感覺的一些描述,穿著舒服當(dāng)然是第一位的~

在這里插入圖片描述

完結(jié)撒花,該向女朋友匯報(bào)工作了~

別忘記收藏哦~

在這里插入圖片描述

到此這篇關(guān)于Python實(shí)戰(zhàn)爬蟲之女友欲買文胸不知何色更美的文章就介紹到這了,更多相關(guān)Python 爬蟲文胸內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python opencv pytesseract 驗(yàn)證碼識(shí)別的實(shí)現(xiàn)

    python opencv pytesseract 驗(yàn)證碼識(shí)別的實(shí)現(xiàn)

    這篇文章主要介紹了python opencv pytesseract 驗(yàn)證碼識(shí)別的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Python實(shí)例方法、類方法、靜態(tài)方法的區(qū)別與作用詳解

    Python實(shí)例方法、類方法、靜態(tài)方法的區(qū)別與作用詳解

    這篇文章主要介紹了Python實(shí)例方法、類方法、靜態(tài)方法的區(qū)別與作用,結(jié)合實(shí)例形式分析了Python面向?qū)ο蟪绦蛟O(shè)計(jì)中實(shí)例方法、類方法、靜態(tài)方法的概念、原理、用法及相關(guān)操作技巧,需要的朋友可以參考下
    2019-03-03
  • Python實(shí)現(xiàn)非正太分布的異常值檢測(cè)方式

    Python實(shí)現(xiàn)非正太分布的異常值檢測(cè)方式

    今天小編就為大家分享一篇Python實(shí)現(xiàn)非正太分布的異常值檢測(cè)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python讀寫csv文件的超詳細(xì)步驟

    Python讀寫csv文件的超詳細(xì)步驟

    python提供了大量的庫,可以非常方便的進(jìn)行各種操作,下面這篇文章主要給大家介紹了關(guān)于Python讀寫csv文件的超詳細(xì)步驟,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • django在接受post請(qǐng)求時(shí)顯示403forbidden實(shí)例解析

    django在接受post請(qǐng)求時(shí)顯示403forbidden實(shí)例解析

    這篇文章主要介紹了django在接受post請(qǐng)求時(shí)顯示403forbidden實(shí)例解析,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • 基于Python實(shí)現(xiàn)24點(diǎn)游戲的示例代碼

    基于Python實(shí)現(xiàn)24點(diǎn)游戲的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)24點(diǎn)游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-12-12
  • python中關(guān)于range()函數(shù)反向遍歷的幾種表達(dá)

    python中關(guān)于range()函數(shù)反向遍歷的幾種表達(dá)

    這篇文章主要介紹了python中關(guān)于range()函數(shù)反向遍歷的幾種表達(dá),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Python使用廣度優(yōu)先搜索遍歷混亂地鐵問題

    Python使用廣度優(yōu)先搜索遍歷混亂地鐵問題

    這篇文章主要介紹了Python使用廣度優(yōu)先搜索遍歷混亂地鐵問題,廣度優(yōu)先搜索算法(又稱寬度優(yōu)先搜索)是最簡(jiǎn)便的圖的搜索算法之一,這一算法也是很多重要的圖的算法的原型,需要的朋友可以參考下
    2023-04-04
  • caffe的python接口生成配置文件學(xué)習(xí)

    caffe的python接口生成配置文件學(xué)習(xí)

    這篇文章主要介紹了caffe的python接口生成配置文件學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Python格式化輸出之format用法詳解

    Python格式化輸出之format用法詳解

    Python中格式化字符串目前有兩種陣營(yíng):%和format,這篇文章主要給大家介紹了關(guān)于Python格式化輸出之format用法的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-01-01

最新評(píng)論

盱眙县| 广灵县| 卓资县| 文成县| 普格县| 简阳市| 通江县| 文山县| 百色市| 虞城县| 淳化县| 娄烦县| 关岭| 当涂县| 仙居县| 获嘉县| 会东县| 驻马店市| 瑞丽市| 霍州市| 桓台县| 蒙城县| 临潭县| 汕头市| 东宁县| 鄯善县| 嵩明县| 旺苍县| 额济纳旗| 平利县| 镇雄县| 北流市| 萨嘎县| 天峻县| 秦安县| 马鞍山市| 子长县| 满洲里市| 康保县| 三门峡市| 梁山县|