【实例】--股票数据定向爬取

从股票列表网页获取股票代码

根据股票代码去股票详情页面获取股票详细信息

1、 股票列表页面

  凤凰网财经—股票信息

  http://app.finance.ifeng.com/list/stock.php?t=ha&f=chg_pct&o=desc&p=1

2、 股票详细信息

  老虎社区—股票详情

  https://www.laohu8.com/stock/600210

股票数据定向爬取思路

1、 查看网站robots协议,查看网站是否可以爬取

2、 查看网页源代码,查看网页信息是否可以直接爬取

3、 爬取网页信息

4、 解析网页,获取页面信息

在HTML页面中

1)      对于非常有特征的数据,可以直接用正则表达式搜索到

2)      信息存在的区域相对固定,则用BeautifulSoup定位标签位置,再用正则表达式获取

5、 将获取的信息储存到文件中

优化代码

1、提高爬虫速度

直接赋值编码

2、提高程序运行体验(运行时间较长的程序)

  增加动态精度显示

import requests
from bs4 import BeautifulSoup
import re
import traceback

def getHTMLText(url, code=‘utf-8‘):
   try:
       r = requests.get(url)
       r.raise_for_status()
       r.encoding = code
       return r.text
   except:
       print(‘爬取失败‘)

def getStockList(lst, stockURL):
    html = getHTMLText(stockURL, ‘GB2312‘)
    soup = BeautifulSoup(html, ‘html.parser‘)
    a = soup.find_all(‘a‘)
    for i in a:
        try:
            href = i.attrs[‘href‘]
            lst.append(re.findall(r"[s][hz]\d{6}", href)[0]) ## 匹配 a 标签中 href 属性以 s 开头,中间是 h 或 z ,最后是6位数字
        except:
            continue

def getStockInfo(lst, stockURL, fpath):
    ## 去掉列表里的重复选项--将列表转换为集合再转换为列表
    lst = list(set(lst))
    count = 0
    for stock in lst:
        url = stockURL + stock[-6:]
        html = getHTMLText(url)
        try:
            if html == ‘‘: ## 判断是否空页面
                continue
            infoDict = {} ## 定义一个字典,存储股票信息
            soup = BeautifulSoup(html, ‘html.parser‘)
            stockInfo = soup.find(‘div‘, attrs={‘class‘:‘stock-info‘})

            name = stockInfo.find_all(attrs={‘class‘:‘name‘})[0]
            price = stockInfo.find_all(attrs={‘class‘: ‘latest‘})[0]
            infoDict.update({‘股票名称‘:name.text.split()[0], ‘最新行情‘:price.text.split()[0]})

            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‘)
                count = count + 1
                ## 增加动态进度显示
                print(‘\r当前进度:{:.2f}%‘.format(count*100/len(lst)), end=‘‘)

        except:
            traceback.print_exc()  ## 获得发生异常的错误信息
            continue

def main():
    stock_list_url = ‘http://app.finance.ifeng.com/list/stock.php?t=ha‘
    stock_info_url = ‘https://www.laohu8.com/stock/‘
    output_file = ‘C:\\try\\StockInfo.txt‘
    slist = []
    getStockList(slist, stock_list_url)
    getStockInfo(slist, stock_info_url, output_file)

main()

  

原文地址:https://www.cnblogs.com/motoharu/p/12346705.html

时间: 2024-10-13 22:35:40

【实例】--股票数据定向爬取的相关文章

python爬虫实例详细介绍之爬取大众点评的数据

python 爬虫实例详细介绍之爬取大众点评的数据 一. Python作为一种语法简洁.面向对象的解释性语言,其便捷性.容易上手性受到众多程序员的青睐,基于python的包也越来越多,使得python能够帮助我们实现越来越多的功能.本文主要介绍如何利用python进行网站数据的抓取工作.我看到过利用c++和Java进行爬虫的代码,c++的代码很复杂,而且可读性.可理解性较低,不易上手,一般是那些高手用来写着玩加深对c++的理解的,这条路目前对我们不通.Java的可读性还可以,就是代码冗余比较多,

[python爬虫] Selenium定向爬取海量精美图片及搜索引擎杂谈

我自认为这是自己写过博客中一篇比较优秀的文章,同时也是在深夜凌晨2点满怀着激情和愉悦之心完成的.首先通过这篇文章,你能学到以下几点:        1.可以了解Python简单爬取图片的一些思路和方法        2.学习Selenium自动.测试分析动态网页和正则表达式的区别和共同点        3.了解作者最近学习得比较多的搜索引擎和知识图谱的整体框架        4.同时作者最近找工作,里面的一些杂谈和建议也许对即将成为应届生的你有所帮助        5.当然,最重要的是你也可以尝

[python爬虫] Selenium定向爬取PubMed生物医学摘要信息

本文主要是自己的在线代码笔记.在生物医学本体Ontology构建过程中,我使用Selenium定向爬取生物医学PubMed数据库的内容.        PubMed是一个免费的搜寻引擎,提供生物医学方面的论文搜寻以及摘要.它的数据库来源为MEDLINE(生物医学数据库),其核心主题为医学,但亦包括其他与医学相关的领域,像是护理学或者其他健康学科.它同时也提供对于相关生物医学资讯上相当全面的支援,像是生化学与细胞生物学.        PubMed是因特网上使用最广泛的免费MEDLINE,该搜寻引

爬虫10-股票信息定向爬取

股票信息定向爬取 功能描述: 目标 获取上交所和深交所所有股票的名称和交易信息 输出 保存在文件中 技术路线 requests bs4 re 候选爬取网站: 新浪股票 http://finance.sina.com.cn/stock/ 百度股票 https://gupiao.baidu.com/stock/ 网站选取: 原则 股票信息静态存在于HTML页面中,非js代码生成,没有robots协议限制 方法 浏览器F12,源代码查看等 不要纠结于某个网站,多找信息源尝试 (在视频里老师表示新浪股票

使用 Chrome 浏览器插件 Web Scraper 10分钟轻松实现网页数据的爬取

本文标签: WebScraper Chrome浏览器插件 网页数据的爬取 使用Chrome 浏览器插件 Web Scraper 可以轻松实现网页数据的爬取,不写代码,鼠标操作,点哪爬哪,还不用考虑爬虫中的登陆.验证码.异步加载等复杂问题. Web Scraper插件 Web Scraper 官网中的简介: Web Scraper Extension (Free!)Using our extension you can create a plan (sitemap) how a web site

爬虫的定向爬取与垂直搜索

转 爬虫的定向爬取与垂直搜索 定向爬虫是网络爬虫的一种. 定向爬虫 定向爬虫可以精准的获取目标站点信息. 定向爬虫获取信息,配上手工或者自动的模版进行信息匹配,将信息进行格式化分析存储. 优势: 基于模版的信息提取技术,能提供更加精准的信息.比如价格,房屋面积,时间,职位,公司名等等. 劣势: 目标网站难以大面积覆盖,因为基于模版匹配的信息提取技术,需要人工的参与配置模版,欲要大面积覆盖各个目标网站,需要大量的人力成本,同样维护模板也需要很大的人力成本. 也就是说定向爬取就是我们要针对不同的网页

requests实例4:图片的爬取与保存

requests实例4:图片的爬取与保存 代码框架: 1 # coding=gbk 2 import requests 3 import os 4 url = "http://image.nationalgeographic.com.cn/2017/0211/20170211061910157.jpg" 5 root = "D://pics//" 6 path = root + url.split('/')[-1] 7 try: 8 if not os.path.e

雪球数据的爬取

import requests from lxml import etree import json import pymongo # 连接mongodb 数据库 存mongodb中 client = pymongo.MongoClient('127.0.0.1', port=27017) db = client.xueqiu collection = db.xueqiu url = 'https://xueqiu.com/' headers = { "User-Agent": &qu

python爬虫入门 之 移动端数据的爬取

第七章 移动端数据的爬取 基于某一款抓包工具 : fiddler ,青花瓷 ,miteproxy 7.1 fiddler 基本配置 7.1.1fiddler简介和安装 什么是Fiddler? Fiddler是位于客户端和服务器端的HTTP代理,也是目前最常用的http抓包工具之一 . 它能够记录客户端和服务器之间的所有 HTTP请求,可以针对特定的HTTP请求,分析请求数据.设置断点.调试web应用.修改请求的数据,甚至可以修改服务器返回的数据,功能非常强大,是web调试的利器. Fiddler