chrome爬取网页表格_伊利股票数据爬取

这篇博客介绍如何使用Python的selenium库爬取网易财经网页上的伊利股票历史数据,包括日期、开盘价等信息,并将数据保存到CSV文件中。通过分析网页结构,利用XPath查找元素,实现数据抓取并进行双重循环遍历不同年份和季度的数据。最后,数据被存储到一个名为'伊利股票1.csv'的文件中。
摘要由CSDN通过智能技术生成

最近在家休息,更新较慢。今天来分析一下爬取股票数据,供大家讨论参考。

首先找到网页URL:

http://quotes.money.163.com/trade/lsjysj_600887.html?year=2010&season=1,这里引用的是网易财经的个股网页。分析网页可以看出年份和季度,我们只需要做一个循环,修改一个年份和季度就可以访问所有网页。

c4c780a464d3a062895a9ebee9bbf57e.png

这是主页情况界面

分析主页:

c33aa8cd1b7c64b04212834f3eff6c9e.png

我们需要的日期,开盘价,最高价,最低价等待每天的数据都在标签

下的里面,并且每天都在一个里面,因此分析完以后开始写爬虫程序。

直接上代码,然后每一行备注,方便大家理解。

首先引入包:

from selenium import webdriver   #这个爬虫仍然用selenium的方式

import requests

from selenium.webdriver.chrome.options import Options   

#这是selenium的配置包

import time       #引入时间,看爬虫要花费多少时间

import csv         #把爬取的导入CSV表格中

import pandas as pd      #引入pandas来保存

这个是爬虫程序:

def spider(count):

    trs=driver.find_elements_by_xpath("//table[@class='table_bg001 border_box limit_sale']/tbody/tr")    #用xpath方式查找元素,tr

    print(len(trs))    #这个是看每一页,也就是一个季度的日期个数,工作日才开盘

    try:

        for tr in trs:

            #这是得到tr中所有的文本,也就是每个的各类数据,但是是在一起的,用空格分开split(''),形成列表,方便提取。这个在字符串中很常用

            tds=tr.text.split(' ')        

            print(tds)                      #列表里面的值都是字符串类型,以后数据用于数据分析不方便

            date=tds[0]                #列表中第一项是日期

            kai_price=tds[1]         #第二项是开盘价,依次类推

            zuigao_price=tds[2]

            zuidi_price=tds[3]

            shou_price=tds[4]

            zhangdie_e=tds[5]

            zhangdie_fu=tds[6]

            chengjiao_liang=tds[7]

            chengjiao_e=tds[8]

            zhengfu=tds[9]

            huanshoulv=tds[10]

            print(count)

            count+=1           #设置的一个技术器

#这里仍然使用yield来返回数据,因为爬取20年的数据比较大,因此每爬取一天的数据返回一次,这样节约内存

  yield  [date,kai_price,zuigao_price,zuidi_price,shou_price,zhangdie_e,zhangdie_fu,chengjiao_liang,chengjiao_e,zhengfu,huanshoulv]

    except:

        print("spdier erro")

主程序:

start=time.perf_counter()   #引入时间

#url="http://quotes.money.163.com/trade/lsjysj_600887.html?year=2000&season=1"

chrome_options=Options()                              #隐藏打开的浏览器  可以删除

chrome_options.add_argument("--headless")

chrome_options.add_argument("--disable-gpu")     #隐藏打开的浏览器

driver=webdriver.Chrome(chrome_options=chrome_options)   #隐藏打开的浏览器

global count    #定义一个变量来计数

count=1

title=['日期','开盘价','最高价','最低价','收盘价','涨跌额','涨跌幅','成交量','成交额','振幅','换手率']     #设置表格的头部信息

stoc_t=pd.DataFrame(columns=title)     #简历pandas的表格

stoc_t.to_csv("伊利股票1.csv",mode='a',index=False,encoding='ANSI')  #加上index=False 后,表的前面就不会空出一列出来了,意思是不要行索引

print("保存成功title")

try:

    for i in range(2000,2021):

        for j in range(1,5):

                #构造一个双重循环设置的URL,爬取20年的数据,由于是到2020年,所有循环要到2021,循环是前闭后开的,这个要注意。并且数字要转换成字符串类型,不然不能相加

            url="http://quotes.money.163.com/trade/lsjysj_600887.html?year="+str(i)+"&season="+str(j)   

            driver.get(url)        #获取网页

            time.sleep(1)  

            for stock in spider(count):      #调用spider()这个函数,并且勇于循环中

                stoc_d=pd.DataFrame(columns=stock)

                stoc_d.to_csv("伊利股票1.csv",mode='a',index=False,encoding='ANSI')

                print("保存成功data")

except:

    print("已经到最后一天了")

end=time.perf_counter()               #运行完了,打印总共需要多少时间

print("20年耗时间:",end-start,"秒")

运行效果

41f6ea1204da8d50133b113c2112cdef.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值