作家
登录

Python爬虫实战:股票数据定向爬虫

作者: 来源: 2017-08-23 09:13:08 阅读 我要评论

  •  
  •             lst.append(re.findall(r"[s][hz]\d{6}", href)[0]) 
  •  
  •         except
  •  
  •             continue  
  • 接下来是获得百度股票网链接描述(https://gupiao.baidu.com/stock/sz300023.html)单只股票的信息。我们先查看该页面的源代码,如下图所示:

    股票的信息就存在上图所示的html代铝闼楝是以我们须要对这段html代码进行解析。过程如下:

    1.百度股票网的网址为:https://gupiao.baidu.com/stock/

    一只股票信息的网址为:https://gupiao.baidu.com/stock/sz300023.html

    功能简介

    • 目标: 获取上交所和深交所所有股票的名称和交易信息。
    • 输出: 保存到文件中。
    • 技巧路线: requests—bs4–re
    • 说话:python3.5

    所以只要百度股票网的网址+每只股票的代码即可,而每只股票的代码我们已经有前面的法度榜样getStockList大年夜东方财富网解析出来了,是以对getStockList函数返回的列表进行遍历即可,代码如下:

    1. for stock in lst: 
    2.  
    3. url = stockURL + stock + ".html"  

    2.获得网址后,就要拜访网页获得网页的html代码了,法度榜样如下:

    1. html = getHTMLText(url) 

    3.获得了html代码后就须要对html代码进行解析,由上图我们可以看到单个股票的信息存放在标签为div,属性为stock-bets的html代铝闼楝是以对其进行解析:

    1. soup = BeautifulSoup(html, 'html.parser'
    2.  
    3. stockInfo = soup.find('div',attrs={'class':'stock-bets'}) 
    1. keyList = stockInfo.find_all('dt'
    2.  
    3. valueList = stockInfo.find_all('dd' 
    1. infoDict = {} 
    2.  
    3. name = stockInfo.find_all(attrs={'class':'bets-name'})[0] 
    4.  
    5. infoDict.update({'股票名称'name.text.split()[0]})  

    split()的意思是股票名称空格后面的部分不须要了。

    5.我们大年夜html代码中还可以不雅察到股票的其他信息存放在dt和dd标签中,个中dt表示股票信息的键域,dd标签是值域。获取全部的键和值:

    并把获得的键和值按键值对的方法村放入字典中:

    第二步,解析页面,找到所有的a标签:

    1. for i in range(len(keyList)): 
    2.  
    3. key = keyList[i].text 
    4.  
    5. val = valueList[i].text 
    6.  
    7. infoDict[key] = val  
    1. with open(fpath, 'a', encoding='utf-8'

        推荐阅读

        浅谈JavaScript中的接口实现

      接口是面向对象JavaScript法度榜样员的对象箱中最有效的对象之一。在设计模式中提出的可重用的面向对象设计的原则之一就是“针对接口编程而不是实现编程”,即我们所说的面向接口编程,这个>>>详细阅读


      本文标题:Python爬虫实战:股票数据定向爬虫

      地址:http://www.17bianji.com/lsqh/36863.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)