爬虫实例(三)——股票数据定向爬虫
来源:互联网 发布:php server 编辑:程序博客网 时间:2024/04/29 08:51
功能描述
目标:获取上交所和深交所所有股票的名称和交易信息
输出:保存到文件中
技术路线:requests‐bs4‐re
候选数据网站的选择
选取原则:股票信息静态存在于HTML页面中,非js代码生成
没有Robots协议限制
选取方法:浏览器F12,源代码查看等
选取心态:不要纠结于某个网站,多找信息源尝试
具体选取过程请看课程视频:北京理工大学公开课《Python网络爬虫与信息提取》
数据网站的确定
获取股票列表:
东方财富网:http://quote.eastmoney.com/stocklist.html
获取个股信息:
百度股票:https://gupiao.baidu.com/stock/
单个股票:https://gupiao.baidu.com/stock/sz002439.html
查看东方财富网的源代码,可以发现个股链接在标签
我们在东方财富网上获得个股链接(获得 sh/sz+6个数字)即可,然后在百度股票上查看信息。将在东方财富网上的信息加在百度股票后面即可得到单个股票的链接。(见上面举例)
以上面的单个股票为例 (https://gupiao.baidu.com/stock/sz002439.html), 查看其源代码,可以看出,股票所有信息都在 class 属性为 “stock-info” 的标签中。查看其基本信息,股票名字在 class 属性为 “bets-name” 的标签中,而成交量等信息在标签
程序的结构设计
(其中,个股信息采用键值对维护)
代码:
import requests as reqfrom bs4 import BeautifulSoup# traceback模块被用来跟踪异常返回信息import tracebackimport redef getHTMLText(url): try: r = req.get(url) r.raise_for_status() r.encoding = r.apparent_encoding return r.text except: return ""def getStockList(lst, stockURL): html = getHTMLText(stockURL) soup = BeautifulSoup(html, 'html.parser') # 个股链接在 <a> 标签中 a = soup.find_all('a') for i in a: try: # 个股链接在 <a> 标签的 href 属性中 # 我们需要获得 sh/sz + 6 个数字,利用正则表达式 href = i.attrs['href'] lst.append(re.findall(r"[s][hz]\d{6}", href)[0]) except: continuedef getStockInfo(lst, stockURL, fpath): for stock in lst: url = stockURL + stock + ".html" html = getHTMLText(url) try: if html == "": continue # 使用键值对记录个股信息 infoDict = {} soup = BeautifulSoup(html, 'html.parser') stockInfo = soup.find('div', attrs={'class':'stock-bets'}) # 获取股票名称 name = stockInfo.find_all(attrs={'class':'bets-name'})[0] infoDict.update({'股票名称':name.text.split()[0]}) # 在 <dt><dd> 标签中获取其他信息,用键值对维护 keyList = stockInfo.find_all('dt') valueList = stockInfo.find_all('dd') for i in range(len(keyList)): key = keyList[i].text val = valueList[i].text infoDict[key] = val # 将获得额信息写入相应文件中 with open(fpath, 'a', encoding='utf-8') as f: f.write(str(infoDict) + '\n') # 利用 traceback 跟踪并输出异常信息 except: traceback.print_exc() continuedef main(): stock_list_url = "http://quote.eastmoney.com/stocklist.html" stock_info_url = "https://gupiao.baidu.com/stock/" output_file = "C:/Users/ChenJX/Desktop/爬虫/Result_stock.txt" lst = [] getStockList(lst, stock_list_url) getStockInfo(lst, stock_info_url, output_file)main()
去相应文件查看输出结果即可。需要注意的是,运行过程中可能会抛出异常信息,如下图所示。这是因为代码中的 stockInfo 可能为空,发生异常。
【参考】北京理工大学网络公开课《Python网络爬虫与信息提取》
- 爬虫实例(三)——股票数据定向爬虫
- 股票数据定向爬虫
- python 东方财富网&百度股票数据定向爬虫 实例
- python爬虫实战二——股票数据定向爬虫【有补充】
- Python网络爬虫与信息提取-Day14-(实例)股票数据定向爬虫
- python3.x爬虫学习:股票数据定向爬虫笔记
- Python 爬虫实战(2):股票数据定向爬虫
- Pyhton网络爬虫——定向爬虫实例
- python爬虫案例——东方财富股票数据采集
- python爬虫案例——新浪腾讯股票数据采集
- Python3.6——"中国大学排名定向爬虫"实例介绍
- 项目一:股票信息定向爬虫
- Scrapy定向爬虫教程(三)——爬取多个页面
- Scrapy定向爬虫教程(三)——爬取多个页面
- Python 定向爬虫入门—Python(三)
- Scrapy定向爬虫教程(四)——数据存入MongoDB
- python爬虫由浅入深9---定向爬取股票数据信息并保存至本地文件
- Python爬虫实例三
- js的单线程和异步
- Mac升级为macOS Sierra系统后项目报错
- 007、java方法
- 2015 计蒜之道 初赛 商品推荐走马灯(dp)
- 找出一堆数中最小的前K个数
- 爬虫实例(三)——股票数据定向爬虫
- HDU
- python里协程使用同步锁Lock
- 008、java数组
- 基数排序(未懂)
- 网狐荣耀版IOS端搭建教程
- 欧拉角与四元数
- 面试or笔试6——小球下落距离
- The First