编辑代码

# coding:utf-8
#JSRUN引擎2.0,支持多达30种语言在线运行,全仿真在线交互输入输出。 
import requests
from bs4 import BeautifulSoup
import pandas as pd

def get_exhibition_data():
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
    }
    
    # 发起请求
    url = "https://shanghai.andexpo.com/"
    response = requests.get(url, headers=headers)
    response.encoding = 'utf-8'  # 强制使用UTF-8编码
    
    if response.status_code != 200:
        print("请求失败,状态码:", response.status_code)
        return []

    # 解析网页
    soup = BeautifulSoup(response.text, 'html.parser')
    
    # 根据实际网页结构调整选择器(需自行分析页面结构)
    exhibitions = []
    for item in soup.select('.exhibition-item'):  # 假设每个展会项使用class="exhibition-item"
        name = item.select_one('.title').text.strip()  # 展会名称
        time = item.select_one('.time').text.strip()   # 时间
        industry = item.select_one('.industry').text.strip()  # 行业
        location = item.select_one('.address').text.strip()   # 地址
        
        exhibitions.append({
            '展会名称': name,
            '时间': time,
            '行业': industry,
            '地址': location
        })
    
    return exhibitions

def save_to_excel(data):
    df = pd.DataFrame(data)
    df.to_excel('上海展会数据.xlsx', index=False)
    print("数据已保存到 上海展会数据.xlsx")

if __name__ == '__main__':
    # 获取数据
    exhibition_data = get_exhibition_data()
    
    if exhibition_data:
        # 保存数据
        save_to_excel(exhibition_data)
    else:
        print("未获取到有效数据")