在上网查阅一些python爬虫文章时,看见有人分享了爬取股票的交易数据,不过实现得比较简单。这里就做个小练习,从百度股票批量爬取各股票的交易信息。
文章出处为:Python 爬虫实战(2):股票数据定向爬虫。
爬取数据:每个股票的日度交易数据
爬取来源:百度股市通
python版本:3.6.6
时间:20190115
1. 找到日度数据url
以中化国际的日K数据为例,通过分析网页,我们可以发现,日度交易数据是通过接口的形式获取的。
获取的url为:https://gupiao.baidu.com/api/stocks/stockdaybar?from=pc&os_ver=1&cuid=xxx&vv=100&format=json&stock_code=sh600500&step=3&start=&count=160&fq_type=no×tamp=1547534373604
这个页面是通过get进行请求的,url中包含的参数如下:
其中stock_code是请求的股票代码,因为中化国际是在上交所交易的,所以股票代码前加上了sh。如果请求时没有加上对应的sh/sz就无法查询到信息。
count是当前返回的数据量,因为是日度数据,160就是返回最近160天的日度数据。
测试后发现,fq_type和timestamp参数可以不填。
所以我们就得到了获取日度交易数据的URL; https://gupiao.baidu.com/api/stocks/stockdaybar?from=pc&os_ver=1&cuid=xxx&vv=100&format=json&stock_code=sh600500&step=3&start=&count=160
对stock_code进行替换就可以获得不同股票对应的日度数据。
2. 找到每个股票对应的股票代码
既然我们找到了根据股票代码获取其对应日度数据的地址,接下来就要去找一下如何获取每个股票的股票代码。
没有在股市通中找到哪个页面有陈列所有股票的=对应的股票代码,这里借鉴上面提到的文章,从东方财富网抓取每个股票对应的代码:http://quote.eastmoney.com/stocklist.html
这个页面中每个股票对应的代码是直接写在HTML代码里,所以我们只需要使用BeautifulSoup或其他库解析网页即可。
3. 实现 import requestsfrom bs4 import BeautifulSoup
import pymysql
from multiprocessing import Pool
import time
# 从东方财富网获取各股票代码
def get_stock_info(list_url):
stock_info