1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Python爬虫——爬取股票信息生成csv文件

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

时间:2021-12-29 19:13:28

相关推荐

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

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

爬取的网址:/ztb/detail#type=ztgc

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

代码:

from lxml import etreefrom fake_useragent import UserAgentfrom selenium import webdriverfrom time import sleepimport 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_datadef 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('/ztb/detail#type=ztgc')# 定位点击获取更多按钮btn = web.find_element_by_xpath('//*[@id="ztgctable"]/tfoot/tr/td')btn.click()#进入睡眠状态是因为点击获取更多后浏览器需要时间加载sleep(3)# 获取页面源代码response = web.page_sourceheads,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 pddata = pd.read_csv('shares_data.csv').head()print(data)

需要csv文件的朋友可以直接下载,也可将复制代码运行一下。

下载地址:/download/HAH_HAH/12319466

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。