Python爬取六国家(地区)最流行的股票并保存到excel的不同的工作表中

问题

爬取“英为财情”网站中最活跃股票数据。
网站url:https://cn.investing.com/equities/most-active-stocks
爬取括号内指定6个热门数据(中国、中国香港、新加坡、美国、英国和德国),保存在excel的一个工作簿中,但要对不同的国家保存为不同的工作表。

打开网站后页面显示如下
在这里插入图片描述

网页分析

查看网页的源代码后发现股票名都在classleft bold plusIconTd elp的td下的a标签的text文本中
在这里插入图片描述
当我们选择新加坡的时候,URL变为https://cn.investing.com/equities/most-active-stocks?country=singapore
在这里插入图片描述
所以只需要修改?后面country的值既可以获得其它国家(地区)的股票数据。

步骤

一、获得请求头

使用审查元素功能可以简单的获得hostuser-agent

headers={
    'Host': 'cn.investing.com',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 Edg/84.0.522.40'

二、导入需要的库

#!/usr/bin/env python
# coding: utf-8

import pandas as pd
import time
import requests
import openpyxl
from bs4 import BeautifulSoup

三、定义获取页面的函数

def get_page(url,params=None,headers=None,proxies=None,timeout=None):

    response = requests.get(url, headers=headers, params=params, proxies=proxies, timeout=timeout)
    print("解析网址:",response.url)
    page = BeautifulSoup(response.text, 'lxml')
    print("响应状态码:", response.status_code)
    return page

四、循环获得每个国家(地区)的股票

先将国家(地区)传入的参数放入列表中

countrys = [
    'china',
    'hong-kong',
    'singapore',
    'uk',
    'usa',
    'germany'
]

因为防止工作表覆盖,所以先定义一个writer对象

writer = pd.ExcelWriter('stocks.xlsx')

根据之前的分析获取股票数据并将其保存到stocks.xlsx文件中。
每个国家(地区)对应一个工作表。
time.sleep(1)防止爬取太快导致被反爬

for country in countrys:
    url = 'https://cn.investing.com/equities/most-active-stocks'

    headers={
        'Host': 'cn.investing.com',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 Edg/84.0.522.40'
    }

    params={
        'country' : country
    }
    page = get_page(url,headers=headers,params=params)
    
    stocks = []
    stocks_list = page.find_all('td','left bold plusIconTd elp')
    for stock in stocks_list:
        stocks.append(stock.a.text)
        
    dataframe = pd.DataFrame({'股票':stocks})
    dataframe.to_excel(writer, sheet_name=country, header=None, index=False)
    
    time.sleep(1)
    
writer.close()

完整代码

#!/usr/bin/env python
# coding: utf-8

import pandas as pd
import time
import requests
import openpyxl
from bs4 import BeautifulSoup


def get_page(url,params=None,headers=None,proxies=None,timeout=None):

    response = requests.get(url, headers=headers, params=params, proxies=proxies, timeout=timeout)
    print("解析网址:",response.url)
    page = BeautifulSoup(response.text, 'lxml')
    print("响应状态码:", response.status_code)
    return page

countrys = [
    'china',
    'hong-kong',
    'singapore',
    'uk',
    'usa',
    'germany'
]

writer = pd.ExcelWriter('stocks.xlsx')

for country in countrys:
    url = 'https://cn.investing.com/equities/most-active-stocks'

    headers={
        'Host': 'cn.investing.com',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 Edg/84.0.522.40'
    }

    params={
        'country' : country
    }
    page = get_page(url,headers=headers,params=params)
    
    stocks = []
    stocks_list = page.find_all('td','left bold plusIconTd elp')
    for stock in stocks_list:
        stocks.append(stock.a.text)
        
    dataframe = pd.DataFrame({'股票':stocks})
    dataframe.to_excel(writer, sheet_name=country, header=None, index=False)
    
    time.sleep(1)
    
writer.close()
### 使用 Python 编写爬虫程序抓取天气数据导出至 Excel 为了完成这一目标,可以采用如下方法: #### 安装必要的库 在开始之前,需确保已安装用于操作Excel文件的相关库。具体来说,`xlwt` 库可用于创建新的Excel工作簿,而 `requests` 或 `BeautifulSoup` 则有助于获取网页上的信息。 ```bash pip install requests beautifulsoup4 xlwt pandas openpyxl ``` 上述命令会安装所需的所有依赖项[^1]。 #### 获取天气数据 利用 `requests` 发送HTTP请求访问提供天气预报服务的网站,通过解析HTML文档提取所需的气象参数。这里假设有一个简单的API接口或者静态页面作为数据源。 ```python import requests from bs4 import BeautifulSoup url = 'http://example.com/weather' # 替换成实际的目标URL response = requests.get(url) html_content = response.text soup = BeautifulSoup(html_content, 'lxml') weather_data = [] for item in soup.find_all('div', class_='forecast-item'): date = item.find('span', class_='date').text.strip() temperature_high = item.find('span', class_='high-temp').text.strip().replace('°C', '') temperature_low = item.find('span', class_='low-temp').text.strip().replace('°C', '') weather_data.append({ 'Date': date, 'High Temperature ()': float(temperature_high), 'Low Temperature ()': float(temperature_low) }) ``` 这段代码展示了如何从指定结构化的HTML片段中抽取日期以及低气温的信息[^2]。 #### 将数据保存Excel 文件 一旦获得了想要的数据集之后,就可以借助于Pandas DataFrame对象轻松地将其转换成表格形式,终存储为`.xlsx`格式的电子表格文件。 ```python import pandas as pd df = pd.DataFrame(weather_data) with pd.ExcelWriter('output.xlsx') as writer: df.to_excel(writer, index=False, sheet_name='Weather Data') ``` 此部分实现了将收集来的天气记录按照列的形式排列好后存入名为`output.xlsx`的工作表里[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值