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

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