Python obtiene algunos datos de búsqueda y los guarda como Excel

Python obtiene datos de búsqueda en caliente de Zhihu

1. Consigue el objetivo y prepárate para el trabajo

1. Objetivo de adquisición: el objetivo de este tutorial de adquisición: una búsqueda activa

2. Preparación

  • entorno python3.x
  • peticiones
  • pandas

       Requests y Pandas son las bibliotecas requeridas para este tutorial. Requests se usa para simular solicitudes http y Pandas se usa para el procesamiento de datos (guarde los resultados como Excel).

  • Abra la página solicitada en el navegador Chrome y presione F12 para abrir la consola del navegador. Haga clic en Red para seleccionar la red y luego haga clic en XHR. Encuentre la solicitud XHR correspondiente y podrá obtener la interfaz de datos de búsqueda activa.
    inserte la descripción de la imagen aquí

2. Comienza a programar

  1. Importar bibliotecas dependientes
import requests
import pandas as pd
  1. Construya un encabezado de solicitud:
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. Definir una interfaz de solicitud, es decir, la dirección de datos
url = "https://www.zhihu.com/api/v3/feed/topstory/hot-lists/total?limit=50&desktop=true"
  1. Envíe la solicitud, ya que la interfaz devuelve el formato JSON, así que aquí hay un paso y el resultado de la respuesta también se convierte al formato JSON.
json = requests.get(url, headers=browse_header).json()
  1. Extraiga la lista de datos de búsqueda activa.
# 热搜列表
content_list = res['data']
  1. Luego realice el análisis json por separado, los campos correspondientes (título, clasificación, índice de búsqueda activa, descripción, dirección del enlace).
df = pd.DataFrame(  # 拼装爬取到的数据为DataFrame
	{
    
    
		'热搜标题': title_list,
		'热搜排名': order_list,
		'热搜指数': score_list,
		'描述': desc_list,
		'链接地址': url_list
	}
)
df.to_excel('百度热搜榜.xlsx', index=False)  # 保存结果数据

Nota: en este código, la dirección del enlace devuelto es un poco diferente, tenemos que hacer algunos ajustes: los ajustes son los siguientes:
url_list.append(content['target']['url'].replace('api', 'www').replace('questions', 'question'))

Código completo:

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)  # 保存结果数据

Finalmente, verifique los datos obtenidos:
inserte la descripción de la imagen aquí
un total de 50 datos.

3. Resumen

Lo anterior es la totalidad de los datos obtenidos. Si tiene otros datos que deben obtenerse con python, deje un mensaje en el área de comentarios. Finalmente, le recomiendo una utilidad JS de front-end: JS Online Tools .

Supongo que te gusta

Origin blog.csdn.net/qq_43762932/article/details/131249565
Recomendado
Clasificación