python帶你采集商家商品數(shù)據(jù)信息~帶你點外賣不迷路

前言

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

一周工作,忙忙碌碌,身心疲憊,一到周末,倒頭大睡,懶得做飯,點個外賣。

今天我們要采集的網(wǎng)站呢,是國內(nèi)知名的網(wǎng)上訂餐平臺~

我做的是采集商家商品數(shù)據(jù)信息,你也可以采集另外數(shù)據(jù)哦~


準(zhǔn)備工作

下面的盡量跟我保持一致哦~不然有可能會發(fā)生報錯 ??

環(huán)境使用:

  • Python 3.8

  • Pycharm


模塊使用:

  • requests >>> pip install requests

  • csv


如果安裝python第三方模塊:

  1. win + R 輸入 cmd 點擊確定, 輸入安裝命令 pip install 模塊名 (pip install requests) 回車

  2. 在pycharm中點擊Terminal(終端) 輸入安裝命令


如何配置pycharm里面的python解釋器?

  1. 選擇file(文件) >>> setting(設(shè)置) >>> Project(項目) >>> python interpreter(python解釋器)

  2. 點擊齒輪, 選擇add

  3. 添加python安裝路徑


pycharm如何安裝插件?

  1. 選擇file(文件) >>> setting(設(shè)置) >>> Plugins(插件)

  2. 點擊 Marketplace 輸入想要安裝的插件名字 比如:翻譯插件 輸入 translation / 漢化插件 輸入 Chinese

  3. 選擇相應(yīng)的插件點擊 install(安裝) 即可

  4. 安裝成功之后 是會彈出 重啟pycharm的選項 點擊確定, 重啟即可生效


基本流程: <通用的>

一. 數(shù)據(jù)來源分析

分析清楚自己想要數(shù)據(jù)內(nèi)容, 是請求那個數(shù)據(jù)包<url>地址可以得到的

通過開發(fā)者工具進行抓包分析...

I. 鼠標(biāo)右鍵點擊檢查(或按F12)彈出開發(fā)者工具, 選擇network 點擊第二頁數(shù)據(jù) 第一個數(shù)據(jù)包就是我們想要數(shù)據(jù)內(nèi)容

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

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

  2. 獲取數(shù)據(jù), 獲取服務(wù)器返回響應(yīng)數(shù)據(jù) ---> 開發(fā)者工具里面response

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

  4. 保存數(shù)據(jù), 保存表格

額外 翻頁多頁數(shù)據(jù)采集


代碼展示

因?qū)徍艘蛩?,我把代碼里的網(wǎng)址刪去啦~你們可以自行添加一下吶。

一共改了五處網(wǎng)址,采集的網(wǎng)站我會在評論區(qū)打出,方便你們添加網(wǎng)址哦~

發(fā)送請求

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

#     - 如何批量替換內(nèi)容
#         選中替換內(nèi)容, 按ctrl + R 輸入正則表達(dá)式命令
#         (.*?): (.*)
#         '$1': '$2',
#     - <Response [403]> 返回響應(yīng)對象 403 狀態(tài)碼
#         大多數(shù)請求, 加防盜鏈即可解決
for page in range(0, 320, 32):
    time.sleep(1)

確定請求url地址

    url = 'https://apimobile..com/group/v4/poi/pcsearch/70'

請求參數(shù)

字典數(shù)據(jù)類型, 構(gòu)建完整鍵值對

    data = {
        'uuid': '4b9d79d54b524ab5a319.1656309336.1.0.0',
        'userid': '266252179',
        'limit': '32',
        'offset': page,
        'cateId': '-1',
        'q': '會所',
    }
    # 請求頭:  偽裝, 把python代碼偽裝(模擬)成瀏覽器發(fā)送請求
    headers = {
        # Referer 防盜鏈 告訴服務(wù)器我們請求url地址從哪里跳轉(zhuǎn)過來的
        'Referer': 'https://chs..com/',
        #  User-Agent 用戶代理 表示瀏覽器基本身份標(biāo)識
        '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 [403]> 返回響應(yīng)對象 403 狀態(tài)碼 表示請求你沒有訪問權(quán)限 <說明沒請求成功> 200 表示請求成功

    response = requests.get(url=url, params=data, headers=headers)
    print(response)

獲取數(shù)據(jù)

獲取響應(yīng)對象json字典數(shù)據(jù)

    # print(response.json())
    # pprint.pprint(response.json())

解析數(shù)據(jù)

---> 根據(jù)得到數(shù)據(jù), 選擇最佳解析方法 直接通過鍵值對取值方式(根據(jù)冒號左邊的內(nèi)容[鍵], 提取冒號右邊的內(nèi)容[值])

    # 把列表里的數(shù)據(jù)一個一個提取出來, 怎么操作用什么方法  ---> for循環(huán)遍歷
    for index in response.json()['data']['searchResult']:
        href = f'https://www..com/xiuxianyule/{index["id"]}/'
        # 如果我不炒股, 他說要股票數(shù)據(jù), 給我錢 讓我給她采集
        dit = {
            '標(biāo)題': index['title'],
            '商圈': index['areaname'],
            '店鋪類型': index['backCateName'],
            '評分': index['avgscore'],
            '人均消費': index['avgprice'],
            '評論量': index['comments'],
            '經(jīng)度': index['longitude'],
            '維度': index['latitude'],
            '詳情頁': href,
        }
        csv_writer.writerow(dit)
        print(dit)
import requests
import re
url = 'https://www..com/xiuxianyule/1718272961/'
headers = {
    'Host': 'www..com',
    '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=url, headers=headers)
# print(response.text)
shop_info = re.findall('"cityName":"(.*?)","cityPy":"chs","brandName":"","shopName":"(.*?)","score":(.*?),"avgPrice":(.*?),"address":"(.*?)","phone":"(.*?)","openTime":"(.*?)"', response.text)
print(shop_info)

多頁列表數(shù)據(jù)采集:

# 導(dǎo)入數(shù)據(jù)請求模塊 ---> 第三方模塊 需要 在cmd里面 pip install requests
import time
import requests
# 導(dǎo)入格式化輸出模塊  ---> 內(nèi)置模塊...
import pprint
# 導(dǎo)入csv模塊
import csv

# 創(chuàng)建文件
f = open('1.csv', mode='a', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=[
    '標(biāo)題',
    '商圈',
    '店鋪類型',
    '評分',
    '人均消費',
    '評論量',
    '經(jīng)度',
    '維度',
    '詳情頁',
])
csv_writer.writeheader()

尾語 ??

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

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

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

最后,博主要一下你們的三連呀(點贊、評論、收藏),不要錢的還是可以搞一搞的嘛~

不知道評論啥的,即使扣個6666也是對博主的鼓舞吖 ?? 感謝 ??

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容