读取股票数据存储到本地MySQL数据库(一)

主要有三个步骤:(1)从东方财富上爬虫读取到所有股票的codelist;(2)从凤凰网的api获取到某只股票历史上所有数据,开盘收盘价,成交量,成交金额,ma均线价格等数据;(3)通过pymysql将获取到的数据存储到本地。

第一个步骤的实现,从EAST_MONEY_URL = 'http://quote.eastmoney.com/stocklist.html'处获取stocklist。主要使用

#encoding = uft-8
import requests
from bs4 import BeautifulSoup
import re

class GetStockList(object):

    def get_html_text(self, url):
        try:
            response = requests.get(url)
            response.raise_for_status()
            response.encoding = 'utf-8'
            return response.text#html变量存储读取的网页text
        except:
            return ''

    def get_stock_list(self, url):
        html = self.get_html_text(url)
        soup = BeautifulSoup(html, 'html.parser')
        a = soup.find_all('a')
        stock_list = []
        for i in a:
            try:
                href = i.attrs['href']
                stock_num = str(re.findall(r"[s][hz]\d{6}",href)[0])
                if stock_num:
                    stock_list.append(stock_num)
            except:
                continue
        return stock_list
find_all()的查找方式可以有多种,第一种按标签方式查找,上面的ul, div, li均是标签;第二种按内容查找,参数为text='xxx';第三种按正则表达式查找。可以跟limit参数限定返回的list的长度,当limit=1时候也就是find()函数了。

查找结果的list每个元素是bs4.element.ResultSet类型,可以继续接find函数,也可以调用attrs属性返回一个dict。

soup.find_all('a')会返回所有标签为a的元素

In [44]: soup.find_all('a', limit=5)
Out[44]:
[�ƾ�,
 Ҫ��,
 ��Ʊ,
 �¹�,
 ��ָ]

In [45]: soup.find_all('a', limit=5)[0].attrs
Out[45]: {'href': 'http://finance.eastmoney.com/', 'target': '_blank'}

In [46]: soup.find_all('a', limit=5)[0].attrs['href']
Out[46]: 'http://finance.eastmoney.com/'







你可能感兴趣的:(读取股票数据存储到本地MySQL数据库(一))