Python爬虫——爬取股票信息生成csv文件

最近在学习数据分析,就想着弄一份csv文件练手用,于是就爬取了股票信息,生成csv文件

爬取的网址:http://quote.eastmoney.com/ztb/detail#type=ztgc

网址信息使用的是动态加载,所以使用了selenium,我是使用的是谷歌浏览器,需要下载谷歌浏览器的驱动程序,下载地址:https://npm.taobao.org/mirrors/chromedriver/(谷歌浏览器最近更新了,已经下载好的朋友需要看一下更新过后的版本和驱动版本是否对应)

代码:

from lxml import etree
from fake_useragent import UserAgent
from selenium import webdriver
from time import sleep
import csv

#伪装
ua = UserAgent()
headers = {'User-Agent':ua.random}

def get_data(response):
    response = etree.HTML(response)

    #获取头信息
    heads = response.xpath('//*[@id="ztgctable"]/thead/tr//text()')

    #获取每只股票信息
    tr_list = response.xpath('//*[@id="ztgctable"]/tbody/tr')
    #用来存放所有的数据
    shares_data = []
    
    for i in tr_list:
        data = i.xpath('./td//text()')
        shares_data.append(data)

    return heads,shares_data

def to_scv(head,shares_data):
    # 一些麻烦的数据直接删掉
    del head[13]
    del head[15]

    with open(file='./shares_data.csv', mode='w', newline='', encoding='utf-8') as file:
        # 创建csv写入对象
        csv_file = csv.writer(file)
        # 写入头部信息
        csv_file.writerow(head)
        #写入股票信息
        for row in shares_data:
            #将’炸板次数‘为零的改为nan,在使用数据分析时可以用到
            if row[12] == '0':
                row[12] = 'nan'
            #麻烦的数据删掉
            del row[13:17]
            csv_file.writerow(row)
    print('csv文件生成成功')


def main():
    web = webdriver.Chrome(executable_path='chromedriver.exe')
    # 发起请求
    web.get('http://quote.eastmoney.com/ztb/detail#type=ztgc')
    # 定位点击获取更多按钮
    btn = web.find_element_by_xpath('//*[@id="ztgctable"]/tfoot/tr/td')
    btn.click()
    #进入睡眠状态是因为点击获取更多后浏览器需要时间加载
    sleep(3)
    # 获取页面源代码
    response = web.page_source

    heads,shares_data = get_data(response)
    to_scv(heads,shares_data)
if __name__ == '__main__':
    main()

运行成功后,会在统计目录下生成shares_data.csv文件

针对代码说明:

本次代码只针对 ‘涨停股池’ 模块,几个模块对应的内容是不一样的。
在这里插入图片描述
本着多一事不如少一事的原则,删去了 ‘涨停统计’ 和‘加自选’ 列
‘炸板次数’ 为0次的将数据变为了nan,用于数据分析中的nan值处理使用
在这里插入图片描述

生成csv文件的部分内容(不得不说,csv文件看着真舒服):
在这里插入图片描述

用pandas读取一下试试:

import pandas as pd
data = pd.read_csv('shares_data.csv').head()
print(data)

在这里插入图片描述
需要csv文件的朋友可以直接下载,也可将复制代码运行一下。
下载地址:https://download.csdn.net/download/HAH_HAH/12319466

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章