中国大学mooc实战项目之股票信息提取 python《网络爬虫与数据提取》

获取股票列表的网页:http://www.bestopview.com/stocklist.html
获取股票信息的网站:https://www.laohu8.com/stock/

  • List item
import requests
import re
from bs4 import BeautifulSoup
#import time

stocklisturl = 'http://www.bestopview.com/stocklist.html'  # 获取股票代码列表的网站
slist = []  # 存放股票代码
sinfolist = []  # 存放每只股票的信息
url = 'https://www.laohu8.com/stock/'


def getHtml(url):  # 获取整个网页代码
    kv = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}
    r = requests.get(url, headers=kv, timeout=30)
    r.raise_for_status()
    r.encoding = 'utf-8'
    soup = BeautifulSoup(r.text, 'html.parser')
    return soup.prettify()


def getstocklist(slist, html):  # 获取股票代码列表
    slistpre = re.findall(r'\?stockcode\=[\d]*\"', html)
    for i in range(len(slistpre)):
        slist.append(slistpre[i][-7:-1])

# 根据股票编号获得股票信息
def getstockinfo(slist, sinfolist):
    count = 0
    num = 30
    for i in range(num):
        try:
            sinfolist.append(['股票编号:{}'.format(slist[i])])
            html = getHtml(url + slist[i])
            soup = BeautifulSoup(html, 'html.parser')
            info = soup.body.script.prettify()
            # 获取股票名
            nameCN = re.findall(r'\"nameCN\"\:\".*?\"', info)
            sinfolist[i].append('名称:{}'.format(nameCN[0][10:-1]))
            # 当前价格
            latestPrice = re.findall(r'\"latestPrice\":[\d\.]*\,\"', info)
            sinfolist[i].append('当前价格:{}'.format(latestPrice[0][14:-2]))
            # 变动率 "changeRate":0,"
            changeRate = re.findall(r'\"changeRate\":[\d\.\-]*\,\"', info)
            sinfolist[i].append('变动率:{}'.format(changeRate[0][13:-2]))
            count += 1
            print('\r当前进度{:.2f}%'.format(count/num*100), end='')

        except:
            count +=1
            print('\r当前进度{:.2f}%'.format(count / 20 * 100), end='')
            sinfolist[i].append('异常')
    print()
def printStockInfo(sinfolist):
    for i in range(len(sinfolist)):
        if sinfolist[i][1] != '异常':
            for j in range(len(sinfolist[i])):
                print(sinfolist[i][j], end='\t')
            print('')

def main():
    getstocklist(slist, getHtml(stocklisturl))
    getstockinfo(slist, sinfolist)
    printStockInfo(sinfolist)


main()

输出结果:

E:\python\python.exe G:/pytest/股票爬虫.py
当前进度100.00%
股票编号:600000	名称:浦发银行	当前价格:10.09	变动率:-0.0069	
股票编号:600004	名称:白云机场	当前价格:11.96	变动率:-0.005	
股票编号:600005	名称:武钢股份	当前价格:3.71	变动率:0	
股票编号:600006	名称:东风汽车	当前价格:7.19	变动率:-0.0042	
股票编号:600007	名称:中国国贸	当前价格:23.15	变动率:0.0447	
股票编号:600008	名称:首创股份	当前价格:2.99	变动率:-0.0066	
股票编号:600009	名称:上海机场	当前价格:47.16	变动率:-0.0099	
股票编号:600010	名称:包钢股份	当前价格:1.62	变动率:0.0318	
股票编号:600011	名称:华能国际	当前价格:4.26	变动率:0.024	
股票编号:600012	名称:皖通高速	当前价格:6.92	变动率:-0.0057	
股票编号:600015	名称:华夏银行	当前价格:6.44	变动率:0	
股票编号:600016	名称:民生银行	当前价格:4.68	变动率:-0.0021	
股票编号:600017	名称:日照港	当前价格:2.74	变动率:0.0037	
股票编号:600018	名称:上港集团	当前价格:4.78	变动率:0.0084	
股票编号:600019	名称:宝钢股份	当前价格:7.88	变动率:0.0155	
股票编号:600020	名称:中原高速	当前价格:3.41	变动率:-0.0058	
股票编号:600021	名称:上海电力	当前价格:7.32	变动率:0.0209	
股票编号:600022	名称:山东钢铁	当前价格:1.79	变动率:0.0229	
股票编号:600023	名称:浙能电力	当前价格:3.63	变动率:0.0083	
股票编号:600026	名称:中远海能	当前价格:6.23	变动率:0.0163	
股票编号:600027	名称:华电国际	当前价格:3.46	变动率:0.0206	
股票编号:600028	名称:中国石化	当前价格:4.36	变动率:0.0046	
股票编号:600029	名称:南方航空	当前价格:6.66	变动率:-0.006	
股票编号:600030	名称:中信证券	当前价格:24.61	变动率:-0.018	
股票编号:600031	名称:三一重工	当前价格:28.89	变动率:-0.0276	
股票编号:600033	名称:福建高速	当前价格:2.75	变动率:0.0036	
股票编号:600035	名称:楚天高速	当前价格:3.06	变动率:0	
股票编号:600036	名称:招商银行	当前价格:54.11	变动率:-0.0245	

Process finished with exit code 0
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值