Python实战项目:抓取琼斯指数股票信息
实战要求:
琼斯指数网页源地址
需要抓取的股票信息:
需求:
1.获取股票代码 ------------数组的索引
2.获取前5行的股票数据 -----------数组的切片
3.返回第一只股票的股价 ----------数组的索引 行索引 列索引
4.计算平均的股价 ---------------np.mean()
5.找出股价大于180的公司的名称 ---- bool_索引 arr>180
6.找出股票前三名的公司-------------sort() 取出前三个
源码:
很简单,先打开开发者工具,获得信息的html信息,然后代码在前面也有演示,贴一个链接:
Python菜鸟爬虫技巧(定个小目标,先爬他一个亿)
Python爬取豆瓣电影评分Top250
不过多赘述,直接上源码:
import codecs
import csv
import numpy as np
import requests
from lxml import etree
file = codecs.open('./code.csv','w',encoding='utf-8')
wr = csv.writer(file)
wr.writerow(['name','code','price'])
num=1
while num <=2:
url='https://money.cnn.com/data/markets/dow/?page='+str(num)
header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'
}
response=requests.get(url,headers = header)
obj = etree.HTML(response.text)
item = obj.xpath('.//div[@class="mod-quoteinfo"]/div[3]/div[3]/div[1]/table/tbody/tr')
for i in item:
try:
name=i.xpath('./td[1]/text()')[0].strip()
#print("公司名字:",name)
except:
pass
try:
code=i.xpath('./td[1]/a')[0].text
#print("股票代码:",code)
except:
pass
try:
price=i.xpath('./td[2]/span')[0].text
#print("价格:",price)
except:
pass
wr.writerow([name,code,price])
data = np.loadtxt('./code.csv',dtype=np.str,delimiter=',')
num = num+1
print(data)
数据处理部分代码:
#1.获取股票代码
data_list = data.tolist()[1:]
code = [i[1] for i in data_list]
print(code)
print('-------------------------------------')
#2.获取前五行的股票数据
print(data[1:6])
print('-------------------------------------')
#3.返回第一只股票的股价
print(data[1][2])
print('-------------------------------------')
#4.计算平均的股价
price=[i[2] for i in data_list]
price_arr=np.array(price,dtype=np.float64)
print(price_arr.mean())
print('-------------------------------------')
#5.找出股价大于180的公司的名称
bool_arr=price_arr>180
company=[i[0] for i in data_list]
company_arr=np.array(company)
print(company_arr[bool_arr])
print('-------------------------------------')
#6.找出股价前三名公司
sort_price_arr=np.sort(price_arr)
one=sort_price_arr[-1]
two=sort_price_arr[-2]
three=sort_price_arr[-3]
one_bool_arr=price_arr==one
two_bool_arr=price_arr==two
three_bool_arr=price_arr==three
print(company_arr[one_bool_arr])
print(company_arr[two_bool_arr])
print(company_arr[three_bool_arr])
琼斯指数网页通过?page=xx
跳转,因此写一个while函数,循环1到2访问抓取即可。
运行截图:
这一次实战最重要的是数据的处理,列表的使用,熟练使用python的 numpy库函数,领会到python针对数据处理所体现出的强大功能。
很明显我们已经把30支股票的信息获取并转换成列表的方式,保存在本地的code.csv文件中。
注意,要先去代码的同级目录下新建文件名为code.csv。如果目录不同最好在代码中写上完整的文件路径。
code.csv文件内容展示
运行截图2:数据的处理、展示
我们分别获取到了:
1.获取股票代码
2.获取前5行的股票数据
3.返回第一只股票的股价
4.计算平均的股价
5.找出股价大于180的公司的名称
6.找出股票前三名的公司
本文地址:https://blog.csdn.net/qq_46157589/article/details/107365741
上一篇: 水印文本框
下一篇: python爬取前程无忧热门城市职位信息