Python はホット検索データを取得し、Excel として保存します

1. 目標を定めて仕事の準備をする

1.取得ターゲット:この取得チュートリアルのターゲット: ホットサーチ

2. 準備

  • 環境 python3.x
  • リクエスト
  • パンダ

       request と pandas は、このチュートリアルに必要なライブラリです。request は http リクエストのシミュレートに使用され、pandas はデータ処理 (結果を Excel として保存) に使用されます。

  • Chrome ブラウザで要求されたページを開き、F12 キーを押してブラウザ コンソールを開きます。「ネットワーク」をクリックしてネットワークを選択し、「XHR」をクリックします。対応する XHR リクエストを見つけると、ホット検索データ インターフェイスを取得できます。
    ここに画像の説明を挿入

2. コーディングを開始する

  1. 依存ライブラリをインポートする
import requests
import pandas as pd
  1. リクエストヘッダーを作成します。
browse_header = {
    
    
    "Accept": "application/json, text/plain, */*",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.60 Safari/537.36",
    "Host": "www.zhihu.com",
    "Referer": "https://www.zhihu.com/hot",
    "Cookie": "_xsrf=Pd0NpG6J8kZdHtzBVnNyQP1g0rO7NKeg; _zap=d7f27b9f-4fe3-4ef4-9376-df278af16940;"
}
  1. リクエストインターフェイス、つまりデータアドレスを定義します。
url = "https://www.zhihu.com/api/v3/feed/topstory/hot-lists/total?limit=50&desktop=true"
  1. リクエストを送信すると、インターフェイスは JSON 形式を返すため、ここで 1 つのステップが実行され、応答結果も JSON 形式に変換されます。
json = requests.get(url, headers=browse_header).json()
  1. ホットサーチデータリストを抽出します。
# 热搜列表
content_list = res['data']
  1. 次に、対応するフィールド (タイトル、ランキング、ホット検索インデックス、説明、リンク アドレス) を個別に json 分析を実行します。
df = pd.DataFrame(  # 拼装爬取到的数据为DataFrame
	{
    
    
		'热搜标题': title_list,
		'热搜排名': order_list,
		'热搜指数': score_list,
		'描述': desc_list,
		'链接地址': url_list
	}
)
df.to_excel('百度热搜榜.xlsx', index=False)  # 保存结果数据

注: このコードでは、返されるリンク アドレスが少し異なるため、いくつかの調整を行う必要があります。調整は次のとおりです。
url_list.append(content['target']['url'].replace('api', 'www').replace('questions', 'question'))

完全なコード:

import requests
import pandas as pd


browse_header = {
    
    
    "Accept": "application/json, text/plain, */*",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.60 Safari/537.36",
    "Host": "www.zhihu.com",
    "Referer": "https://www.zhihu.com/hot",
    "Cookie": "_xsrf=Pd0NpG6J8kZdHtzBVnNyQP1g0rO7NKeg; _zap=d7f27b9f-4fe3-4ef4-9376-df278af16940;"
}

url = "https://www.zhihu.com/api/v3/feed/topstory/hot-lists/total?limit=50&desktop=true"

res = requests.get(url, headers=browse_header).json()
# 热搜列表
content_list = res['data']
title_list = []
order_list = []
score_list = []
desc_list = []
url_list = []
index = 0
for content in content_list:
    index += 1
    order_list.append(index)
    title_list.append(content['target']['title'])
    score_list.append(content['detail_text'])
    desc_list.append(content['target']['excerpt'])
    url_list.append(content['target']['url'].replace('api', 'www').replace('questions', 'question'))

df = pd.DataFrame({
    
    
    '热搜标题': title_list,
    '热搜排名': order_list,
    '热搜热度': score_list,
    '描述': desc_list,
    '链接地址': url_list
})
df.to_excel('知乎热搜榜.xlsx', index=False)  # 保存结果数据

最後に、取得したデータを確認します。
ここに画像の説明を挿入
合計50個のデータです。

3. まとめ

以上が取得したデータの全体ですが、他にPythonで取得が必要なデータがある場合はコメント欄にメッセージを残してください。最後に、フロントエンド JS ユーティリティであるJS Online Toolsをお勧めします。

おすすめ

転載: blog.csdn.net/qq_43762932/article/details/131249565