私は肉を食べるだけでなく、問題ないはずです-都市のバーベキューレストランのデータをクロールします(完全なPythonクローラーコードを使用)

前面に書かれたちょっとしたでたらめ:

肉食動物にとって、肉を食べることは圧倒される可能性があります!特にバーベキュー肉の場合、肉片がゆっくりと調理されるのを見て、グリルで「ジジ」の音を聞くと、この種の期待は他の食べ物ではもたらされません。デザートが「一目惚れ」なら、肉は「飽きることがない」。
画像の説明を追加してください
「バーベキューコントロール」を活用するために、今日はPythonを使用して、市内のバーベキューレストランのデータをクロールし、最適なものを選択します。

準備オーケー

環境

  • Python 3.6
  • pycharm
  • リクエスト>>>リクエストの送信pipインストールリクエスト
  • csv>>>データを保存

爬虫類の最も基本的な考え方を理解する

1.データソース分析

  1. クロールするコンテンツを決定しますか?
    ストアデータをクロールします
  2. これらのものがどこ
    から来ているかを調べてください
  3. リクエストの送信、見つかったパケットのリクエストの送信
  4. サーバーから返された応答データに基づいてデータを取得します
  5. データを解析し、必要なコンテンツデータを抽出します
  6. データを保存し、csvファイルに保存します
  7. 複数ページのクロール、URLアドレスパラメータに応じて変更

コード実装プロセス

  1. リクエストを送信
url = 'https://apimobile.某tuan.com/group/v4/poi/pcsearch/70'
data = {
    'uuid': '6e481fe03995425389b9.1630752137.1.0.0',
    'userid': '266252179',
    'limit': '32',
    'offset': 32,
    'cateId': '-1',
    'q': '烤肉',
    'token': '4MJy5kaiY_0MoirG34NJTcVUbz0AAAAAkQ4AAF4NOv8TNNdNqymsxWRtJVUW4NjQFW35_twZkd49gZqFzL1IOHxnL0s4hB03zfr3Pg',
}
# 请求头 都是可以从开发者工具里面直接复制粘贴
# ser-Agent: 浏览器的基本信息
headers = {
    'Referer': 'https://chs.某tuan.com/',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36'
}
# 发送请求
response = requests.get(url=url, params=data, headers=headers)

200は、リクエストが成功し、ステータスコードが403であることを示します。アクセス権がありません

2.データを取得する

print(response.json())

3.データを解析します

result = response.json()['data']['searchResult']
# [] 列表 把里面每个元素都提取出来 for循环遍历
for index in result:
    # pprint.pprint(index)
    # f'{}' 字符串格式化
    index_url = f'https://www.某tuan.com/meishi/{index["id"]}/'
    # ctrl + D
    dit = {
        '店铺名称': index['title'],
        '店铺评分': index['avgscore'],
        '评论数量': index['comments'],
        '人均消费': index['avgprice'],
        '所在商圈': index['areaname'],
        '店铺类型': index['backCateName'],
        '详情页': index_url,
    }
    csv_writer.writerow(dit)
    print(dit)

4.データを保存します

f = open('烤肉数据.csv', mode='a', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=[
    '店铺名称',
    '店铺评分',
    '评论数量',
    '人均消费',
    '所在商圈',
    '店铺类型',
    '详情页',
])
csv_writer.writeheader() # 写入表头

5.ページをめくる

for page in range(0, 1025, 32):
    url = 'https://apimobile.某tuan.com/group/v4/poi/pcsearch/70'
    data = {
        'uuid': '6e481fe03995425389b9.1630752137.1.0.0',
        'userid': '266252179',
        'limit': '32',
        'offset': page,
        'cateId': '-1',
        'q': '烤肉',
        'token': '4MJy5kaiY_0MoirG34NJTcVUbz0AAAAAkQ4AAF4NOv8TNNdNqymsxWRtJVUW4NjQFW35_twZkd49gZqFzL1IOHxnL0s4hB03zfr3Pg',
    }

コードを実行してデータを取得します

画像の説明を追加してください
画像の説明を追加してください
Qグループに詳細情報を追加するには、ここをクリックしてください

完全なコード

f = open('烤肉数据1.csv', mode='a', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=[
    '店铺名称',
    '店铺评分',
    '评论数量',
    '人均消费',
    '所在商圈',
    '店铺类型',
    '详情页',
])
csv_writer.writeheader() # 写入表头

for page in range(0, 1025, 32):
    url = 'https://apimobile.某tuan.com/group/v4/poi/pcsearch/70'
    data = {
        'uuid': '6e481fe03995425389b9.1630752137.1.0.0',
        'userid': '266252179',
        'limit': '32',
        'offset': page,
        'cateId': '-1',
        'q': '烤肉',
        'token': '4MJy5kaiY_0MoirG34NJTcVUbz0AAAAAkQ4AAF4NOv8TNNdNqymsxWRtJVUW4NjQFW35_twZkd49gZqFzL1IOHxnL0s4hB03zfr3Pg',
    }
    headers = {
        'Referer': 'https://chs.某tuan.com/',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36'
    }
    # 发送请求
    response = requests.get(url=url, params=data, headers=headers)
    # 200 表示请求成功 状态码 403 你没有访问权限

    result = response.json()['data']['searchResult']
    # [] 列表 把里面每个元素都提取出来 for循环遍历
    for index in result:
        # pprint.pprint(index)
        # f'{}' 字符串格式化
        index_url = f'https://www.meituan.com/meishi/{index["id"]}/'
        # ctrl + D
        dit = {
            '店铺名称': index['title'],
            '店铺评分': index['avgscore'],
            '评论数量': index['comments'],
            '人均消费': index['avgprice'],
            '所在商圈': index['areaname'],
            '店铺类型': index['backCateName'],
            '详情页': index_url,
        }
        csv_writer.writerow(dit)
        print(dit)

おすすめ

転載: blog.csdn.net/m0_67575344/article/details/124131681