python 学习 爬取证券之星的股票信息
选择原因,数据好获取,便于操作!

第一步,找到股票相关的信息,先去东方财富网,找到股票的代码查询一览表网站
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190914212532135.png
在这里,我们能找到所以的股票信息,比如名称,代号等等!!
然后,我们来到证券之星网站,随便找一只股,

我们发现,所有的股票的url 都是以 ‘https://stock.quote.stockstar.com/’+ 股票代码+ ".shtml"的形式构成,因此,我们只需要在东方财富网中找到所有的股票代码,并获取到哟个列表中,后面再通过遍历就可以将所有的股票网页获取到,因此,我们先建立主函数,获取所有的股票代码!!!

    #该爬虫是针对 证券之星这个网站爬取数据的#该爬虫分为四个函数,一个主函数(main),三个作用函数!#注意,少用[''' ''']这样的方式注释,会出现bug---->except an indented block#导入库import requestsfrom bs4 import BeautifulSoupimport tracebackimport redef getHTMLText(url, code="utf-8"):#该函数是获取网页的函数,主要负责获取每次改变之后的网页数据
#该函数是一个爬虫模板try:head={}head['User-Agent']='Mozilla/5.0'#伪装,比较简单r = requests.get(url,headers=head,timeout = 30)#r只是一个单纯的返回,无实质数据,r.text中才是#print(url)#print(r.status_code)#判断是否成功获取网页r.encoding = code   #减少时间,优化,不算很懂return r.text             #返回爬取网页中的数据except:return ""def getStockList(lst, stockURL):


在东方财富网的网页源代码中,我们发现如上图
因此,我们可以BeautifulSoup中的find_all()找到我们需要的数据

  #在东方财富网网页源代码中,我们发现,股票信息都存储在a标签下,所以,我们用#filename.find_all()函数,将a标签下的信息都保存在a列表下#首先,这个是爬取东方财富网的股票信息的函数#但其实很多网页与此类似html = getHTMLText(stockURL,"GB2312")#获取网页链接和和他的编码方式!自己去网站查的,不同网站不同soup = BeautifulSoup(html, 'html.parser')#对网页进行解析,可以用soup.prettify()将网页规则化,整齐化,如下soup.prettify()a = soup.find_all('a')for i in a:
#对a进行遍历,将其中 找到a标签下的 'href' 键,用正则表达式或者bs4库中的
# filename.get('key') 函数将股票的信息拿到,再进行分割,用filename.split()#此处,用的正则表达式进行匹配!!try:href = i.attrs['href']#或者href=i.get('href')
#重点!!!这里将href定位在了'href'标签下,防止找错地方,导致数据错误lst.append(re.findall(r"\d{6}", href)[0])#正则表达式进行匹配,看你需要什么数据,就对什么数据进行匹配except:continue就此,我们拿到了所以的股票股票信息(即股票代码),然后我们就可以在证券之星网站爬取我们所需要的东西了。def getStockInfo(lst, stockURL, fpath,taplt):#重点  路径保持,数据获取!!
#难点  分析数据  定位数据,并截取数据!!count = 0
#count计数,用来统计输出for stock in lst:
#循环引用,用来得到在证券之星中 相关股票的信息url = stockURL + stock + ".shtml"
#获取url链接,并获取链接内容html = getHTMLText(url,'gb2312')try:if html=="":
#如果在东方财富网中有的数据证券之星中没有,即输出的html为空continueinfoDict = {}
#创建字典,保存数据soup = BeautifulSoup(html, 'html.parser')
#将找到的股票页面信息转化成易读的信息stockInfo = soup.find('div',attrs={'class':'bom_bor w'})#<div class="hq_L M">
#通过用filename.find 函数,将html信息仅仅定位在<div 'class':'bom_bor w'>标签内
#有助于我们减少搜索量,便于查找信息
#注意看格式!!!name = stockInfo.find_all(attrs={'class':'name'})[0]
#在缩小的范围内,查找含有['class':'name']字典的标签,他得到的是标签及标签的内容显示出来
#因此我们要对name text化infoDict.update({'股票名称': name.text.split()[0]})
#name text 化之后,进行分割,得到我们要的股票名称#print(name.text.split()[0])stockInfo = soup.find('table',attrs={'id':'stock_quoteinfo'})
#同上,股票的数据在一个更小的标签组里,所以,我们重新将stockInfo定位keyList = stockInfo.find_all('td')valueList=stockInfo.find_all('span')
#仔细观察,会发现,股票的信息都td span 标签组下,所以,我们将key ,val就可以通过
#find_all 函数找到#准备格式化输出for i in range(5):
#这里我只取前5/4个股票指标,可以更多key = keyList[i].text.split(':')[0]
#仔细观察网页源代码会发现,你所取的key 包含了val,因此,我们要截取出来val = valueList[i].textinfoDict[key] = val
#字典key 与 val 对应print(taplt.format(infoDict['股票名称'], infoDict['今开'], infoDict['最高'], infoDict['成交'],infoDict['市盈'], infoDict['上证指数'],chr(12288)))
#格式化输出,好看一点with open(fpath, 'a', encoding='utf-8') as f:
#open(name[, mode[, buffering]]),(名称地址,写入方式(模式),指定格式)
#含义 第一个代表地址,第二个'a',代表add,追加,第三个写入格式!!f.write( str(infoDict) + '\n' )#换行添加count = count + 1#计数器,可以用来统计爬了多少只股票!!#print("一共爬取了%d只股票!!!你真棒"%count)except:continue

就此,爬虫已完成,但我们仍需定义主函数,完成我们所需要的任务。

def main():stock_list_url = 'http://quote.eastmoney.com/stock_list.html'  #http://quote.eastmoney.com/stock_list.html
#东方财富网的股票信息链接stock_info_url = 'https://stock.quote.stockstar.com/'#600505.shtml
#证券之星网站股票信息查询的前缀output_file = 'E:/桌面/python/股票.txt'
#股票保存地址slist=[]
#空集,用来收集股票信息的taplt='{0:{6}^8}\t{1:^8}\t{2:^8}\t{3:{6}^8}\t{4:^8}\t{5:^8}'print(taplt.format('股票名称', '今开', '最高', '成交', '市盈', '上证指数',chr(12288)))# 格式化输出模板getStockList(slist, stock_list_url)   #爬取股票代码req=getStockInfo(slist, stock_info_url, output_file,taplt)main()

这样,我们的爬取证券之星中股票信息的爬虫就写完了,运行就可以了!!!

下面附上全部代码!

#CrawBaiduStocksB.py
#该爬虫是针对 证券之星这个网站爬取数据的
#该爬虫分为四个函数,一个主函数(main),三个作用函数!
#注意,少用[''' ''']这样的方式注释,会出现bug---->except an indented block
#导入库
import requests
from bs4 import BeautifulSoup
import traceback
import redef getHTMLText(url, code="utf-8"):#该函数是获取网页的函数,主要负责获取每次改变之后的网页数据
#该函数是一个爬虫模板try:head={}head['User-Agent']='Mozilla/5.0'#伪装,比较简单r = requests.get(url,headers=head,timeout = 30)#r只是一个单纯的返回,无实质数据,r.text中才是#print(url)#print(r.status_code)#判断是否成功获取网页r.encoding = code   #减少时间,优化,不算很懂return r.text             #返回爬取网页中的数据except:return ""def getStockList(lst, stockURL):#首先,这个是爬取东方财富网的股票信息的函数
#但其实很多网页与此类似html = getHTMLText(stockURL,"GB2312")#获取网页链接和和他的编码方式!自己去网站查的,不同网站不同soup = BeautifulSoup(html, 'html.parser')#对网页进行解析,可以用soup.prettify()将网页规则化,整齐化,如下soup.prettify()a = soup.find_all('a')#在东方财富网网页源代码中,我们发现,股票信息都存储在a标签下,所以,我们用
#filename.find_all()函数,将a标签下的信息都保存在a列表下for i in a:
#对a进行遍历,将其中 找到a标签下的 'href' 键,用正则表达式或者bs4库中的
# filename.get('key') 函数将股票的信息拿到,再进行分割,用filename.split()#此处,用的正则表达式进行匹配!!try:href = i.attrs['href']#或者href=i.get('href')
#重点!!!这里将href定位在了'href'标签下,防止找错地方,导致数据错误lst.append(re.findall(r"\d{6}", href)[0])#正则表达式进行匹配,看你需要什么数据,就对什么数据进行匹配except:continuedef getStockInfo(lst, stockURL, fpath,taplt):#重点  路径保持,数据获取!!
#难点  分析数据  定位数据,并截取数据!!count = 0
#count计数,用来统计输出for stock in lst:
#循环引用,用来得到在证券之星中 相关股票的信息url = stockURL + stock + ".shtml"
#获取url链接,并获取链接内容html = getHTMLText(url,'gb2312')try:if html=="":
#如果在东方财富网中有的数据证券之星中没有,即输出的html为空continueinfoDict = {}
#创建字典,保存数据soup = BeautifulSoup(html, 'html.parser')
#将找到的股票页面信息转化成易读的信息stockInfo = soup.find('div',attrs={'class':'bom_bor w'})#<div class="hq_L M">
#通过用filename.find 函数,将html信息仅仅定位在<div 'class':'bom_bor w'>标签内
#有助于我们减少搜索量,便于查找信息
#注意看格式!!!name = stockInfo.find_all(attrs={'class':'name'})[0]
#在缩小的范围内,查找含有['class':'name']字典的标签,他得到的是标签及标签的内容显示出来
#因此我们要对name text化infoDict.update({'股票名称': name.text.split()[0]})
#name text 化之后,进行分割,得到我们要的股票名称#print(name.text.split()[0])stockInfo = soup.find('table',attrs={'id':'stock_quoteinfo'})
#同上,股票的数据在一个更小的标签组里,所以,我们重新将stockInfo定位keyList = stockInfo.find_all('td')valueList=stockInfo.find_all('span')
#仔细观察,会发现,股票的信息都td span 标签组下,所以,我们将key ,val就可以通过
#find_all 函数找到#准备格式化输出for i in range(5):
#这里我只取前5/4个股票指标,可以更多key = keyList[i].text.split(':')[0]
#仔细观察网页源代码会发现,你所取的key 包含了val,因此,我们要截取出来val = valueList[i].textinfoDict[key] = val
#字典key 与 val 对应print(taplt.format(infoDict['股票名称'], infoDict['今开'], infoDict['最高'], infoDict['成交'],infoDict['市盈'], infoDict['上证指数'],chr(12288)))
#格式化输出,好看一点with open(fpath, 'a', encoding='utf-8') as f:
#open(name[, mode[, buffering]]),(名称地址,写入方式(模式),指定格式)
#含义 第一个代表地址,第二个'a',代表add,追加,第三个写入格式!!f.write( str(infoDict) + '\n' )#换行添加count = count + 1#计数器,可以用来统计爬了多少只股票!!#print("一共爬取了%d只股票!!!你真棒"%count)except:continuedef main():stock_list_url = 'http://quote.eastmoney.com/stock_list.html'  #http://quote.eastmoney.com/stock_list.html
#东方财富网的股票信息链接stock_info_url = 'https://stock.quote.stockstar.com/'#600505.shtml
#证券之星网站股票信息查询的前缀output_file = 'E:/桌面/python/股票.txt'
#股票保存地址slist=[]
#空集,用来收集股票信息的taplt='{0:{6}^8}\t{1:^8}\t{2:^8}\t{3:{6}^8}\t{4:^8}\t{5:^8}'print(taplt.format('股票名称', '今开', '最高', '成交', '市盈', '上证指数',chr(12288)))# 格式化输出模板getStockList(slist, stock_list_url)   #爬取股票代码req=getStockInfo(slist, stock_info_url, output_file,taplt)main()

python 学习 爬取证券之星的股票信息相关推荐

  1. python学习爬取数据二级页面的数据

    本次主要是讲解如何爬取二级页面的数据 一,本次案例就业湖北美和易思的学习官网的最新课程为案例讲解 现在我们要爬取网站上的最新课程爬取前5页 爬取每门课的内容如下 二,下面直接上代码 结果如下 有不懂的 ...

  2. python学习 爬取中华英才网工作职位

    一.技能: (1)scrapy爬虫的原理: (2)xpath获取网页信息以及正则表达式的使用: 二.代码: (1)创建工程: scrapy   startproject   wuyoujob1 在sp ...

  3. python学习爬取肯德基官网商品地址的查询

    # 功能: 进行爬虫项目编写 # 开发时间: 2020/10/26 10:12 import requests import json if __name__ == '__main__':#进行UA伪 ...

  4. python 学习爬取链家武汉二手房市场成交记录

    以前几乎没有写过博客的,今年给自己立的flag其中有两条就是1.至少完成10篇计算类博客.2.每个月需要有一篇投资总结,so.. 由于老妈最近逼着买房,但是现在感觉确实不是好的时机,具体的这里不说,但 ...

  5. python学习 爬取亚马逊网页,失败后。修改HTTP报文头部后成功!

    通过修改HTTP报文头部,来成功获取网页内容! python import requests r = requests.get("https://www.amazon.cn/gp/produ ...

  6. python 学习爬取哔哩哔哩今日热门的前100个视频

    代码实现 我们通过上面的尝试写了段代码,发现 B 站在一定程度上做了反爬虫操作,所以我们需要先获取 headers 信息,否则下载下来的视频是空的,然后定义 params 参数存储 JSON 数据,然 ...

  7. Python爬虫——爬取股票信息

    Python爬虫--爬取股票信息 1. 准备工作 每一次浏览器访问网页,会自动向浏览器服务器发送本地的电脑信息(headers),远方服务器接收到信息后会反馈给你网页信息(response),然后电脑 ...

  8. python爬虫自学网站_python爬虫学习 爬取幽默笑话网站

    这篇文章主要介绍了python爬虫爬取幽默笑话网站,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 爬取网站为:http://xiaohua.zol. ...

  9. Python 学习 02 —— Python如何爬取数据

    文章目录 系列文章 二.Python 爬 虫 1.任务介绍 2.简介 3.基本流程 3.1.准备工作 3.1.1.分析页面 3.1.2.编码规范 3.1.3.导入模块 3.1.4.程序流程 3.2.获 ...

最新文章

  1. torchtext语料库 词与 下标互转使用教程
  2. 解决phpQuery(DOMDocument)解析部分HTML会产生乱码的问题
  3. excel导入mysql语句_求助:用SQL语句从Excel将数据导入到SQL数据库
  4. android+java.lang.VerifyError
  5. 大数据学习(09)--spark学习
  6. WordPress 极简约风格smalls-one主题
  7. FPGA同步复位与异步复位深度理解
  8. java io .log_namenode无法启动:java.io.FileNotFoundException: .log (Permission denied)
  9. ASP.NET Core开发Docker部署
  10. 为什么你会觉得微服务架构很别扭
  11. cookie实现上次访问时间
  12. XP-在恢复时返回到欢迎屏幕
  13. 软件项目管理 第七章 进度计划
  14. oracle短表和长表的区别,人口普查长表哪些人填和短表有什么区别
  15. java 解析unicode,解析Unicode编码和Java char
  16. 贴片晶振为什么要邻层挖空敷铜,背后的原理原来是这样的!#终南小师傅
  17. 字体pt和WORD里的字号是怎么对应
  18. STL浅析 RB-tree(红黑树)
  19. 量化交易入门阶段——欧奈尔的CANSLIM模型(A 年度净利润同比增长率)
  20. Windows下Nexus 5的Android 5.0以上版本官方ROM的刷机教程

热门文章

  1. IT项目管理 分享7 个开源项目管理工具
  2. 条件数cond函数(matlab)
  3. 软件测试白皮书-正交试验设计方法
  4. Markdown 语法汇总
  5. python爬取千千音乐榜单_Python爬取QQ音乐榜单数据
  6. Flutter中网络图片加载和缓存源码分析,踩坑了
  7. 【项目实战】Python实现支持向量机SVM回归模型(SVR算法)项目实战
  8. Python实现PSO粒子群优化支持向量机回归模型(svr算法)项目实战
  9. CalBioreagents超全Id 蛋白兔单克隆抗体,助力科研
  10. HBase shell 命令创建表及添加数据操作