Python爬虫获取基金基本信息

目录
  • 1 前言
  • 2 如何抓取基本信息
  • 3 xpath 获取数据
  • 4 bs4 获取数据
  • 5 最终结果展现

1 前言

上篇文章Python爬虫获取基金列表我们已经讲述了如何从基金网站上获取基金的列表信息。这一骗我们延续上一篇,继续分享如何抓取基金的基本信息做展示。展示的内容包括基金的基本信息,诸如基金公司,基金经理,创建时间以及追踪标、持仓明细等信息。

2 如何抓取基本信息

# 在这里我就直接贴地址了,这个地址的获取是从基金列表跳转,然后点基金概况就可以获取到了。
http://fundf10.eastmoney.com/jbgk_005585.html

基金的详情页面和基金的基本信息页面:

现在我们需要做的事情就是怎么把基金的基本概况数据抓取下来,很遗憾,这个工作不像上次那样可以直接通过接口调用的方式获取结果,而是需要我们解析页面html,通过获取元素来解析我们所需要的信息。这时我们就需要使用xpath来获取所需要的元素。

3 xpath 获取数据

解析html 数据,我们通常使用 xpath 来获取页面的数据,在这里我们也首选这个 xpath,那么怎么使用呢?首先需要安装相关的类库。

# 安装 lxml
pip install lxml

使用浏览器打开,然后点击[检查]使用选择基金基本信息,然后如图所示选择[copy XPath],可以获取到数据所在的表格位置

from lxml import etree
# ...
# 将返回的数据结果进行解析,形成 html 文档
html = etree.HTML(resp_body)
result = etree.tostring(html, pretty_print=True)
# 打印获取到的结果
print(result)
# 抓取数据的位置,这个地方的数据是通过浏览器的 xpath 定位来确定的
table_body = html.xpath('//*[@id="bodydiv"]/div[8]/div[3]/div[2]/div[3]/div/div[1]/table/tbody')
# 打印数据结果
print(table_body)

按照常理来说,这里应该可以获取到基金基本新的结果,但是万万没想到呀,竟然失算了,获取到的结果竟然为空,百思不得其解。我还以为是api使用的不够熟练,不能正确的获取,直到我仔细研究了返回的页面信息,才看到根本没有 tbody 这个元素,可能是浏览器渲染后导致的结果,也就是说通过 xpath 来定位元素位置来获取数据这条路可能不行。事实上也确实是如此,基金基本信息的数据是放在页面的 scripts 标签里面的,所以这个条真的就行不通了。可能通过xpath是配合Selenium一起使用做页面自动化测试的,这个有机会再去研究吧。

4 bs4 获取数据

既然直接获取页面元素的方式行不通,那么就只有解析返回页面来获取数据了,java 语言的话可以使用 joup来解析获取数据,但是python又如何来操作呢?这就需要使用 bs4 来解决了。安装方式如下:

# 简称bs4,python解析html非常好用的第三方类库
pip install beautifulsoup4

其主要使用的解析方法如下图所示,接下来我们使用lxml来解析html数据,如何使用html5lib的话,需要先进行安装才能使用 pip install html5lib

解析数据的思路是这样的,我们看到浏览器返回的结果是包含 table>tr>td 这样的结构,我们先获取到基金对应信息的table,然后获取到table中的 td,因为这个表格展示内容是固定的,我们选取对应的数据下标即可获取对应的数据。

# 解析返回的报文
soup = BeautifulSoup(resp_body, 'lxml')
# 获取数据的table标签所有数据
body_list = soup.find_all("table")
# 基金信息对应的是第二个
basic_info = body_list[1]
# 打印结果并循环输出td的内容
print(basic_info)
td_list = basic_info.find_all("td")
for node in td_list:
   print(node.get_text())

这里涉及两个方法find_allget_text,第一个是元素选择器,可以根据标签class进行搜索,第二个是获取元素中的内容。

5 最终结果展现

经常不断的尝试,最终的最简版代码如下所示:

from lxml import etree
import requests
from prettytable import PrettyTable
import datetime
# 使用BeautifulSoup解析网页
from bs4 import BeautifulSoup
# 获取基金基本信息
def query_fund_basic(code):
    # http://fundf10.eastmoney.com/jbgk_005585.html
    response = requests.get("http://fundf10.eastmoney.com/jbgk_{}.html".format(code))
    resp_body = response.text
    soup = BeautifulSoup(resp_body, 'lxml')
    body_list = soup.find_all("table")
    basic_info = body_list[1]
    # print(basic_info)
    tr_list = basic_info.find_all("td")
    # 暂存一下列表
    tmp_list = []
​
    tmp_list.append(tr_list[2].get_text().replace("(前端)", ""))
    tmp_list.append(tr_list[1].get_text())
    tmp_list.append(tr_list[8].get_text())
    tmp_list.append(tr_list[10].get_text())
    tmp_list.append(tr_list[5].get_text().split("/")[0].strip())
    tmp_list.append(tr_list[5].get_text().split("/")[1].strip().replace("亿份", ""))
    tmp_list.append(tr_list[3].get_text())
    tmp_list.append(tr_list[18].get_text())
    tmp_list.append(tr_list[19].get_text())
    return tmp_list
​
if __name__ == '__main__':
    print("start analyze !")
    code_list = ["005585", "000362"]
    # 需要关注的基本信息如右所示 基金代码 基金名称 基金公司 基金经理 创建时间
    # 基金份额 基金类型 业绩基准 跟踪标的
    head_list = ["code", "name", "company", "manager", "create_time",
    "fund_share", "fund_type", "comp_basic", "idx_target"]
     # 生成表格对象
    tb = PrettyTable()
    tb.field_names = head_list  # 定义表头
    for node in code_list:
       tb.add_row(query_fund_basic(node))
    # 输出表格
    print(tb)
    reslt = str(tb).replace("+", "|")
    print(reslt)

最终打印的结果如下所示,感觉很期待: 

接来下我们会利用数据库进行存储基金的基本信息,然后基于此才能抓取基金的变动信息进行分析,距离激动人心的时刻已经很近了。

到此这篇关于Python爬虫获取基金基本信息的文章就介绍到这了,更多相关Python获取信息内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python 获取异常(Exception)信息的几种方法

    异常信息的获取对于程序的调试非常重要,可以有助于快速定位有错误程序语句的位置.下面介绍几种 Python 中获取异常信息的方法,这里获取异常(Exception)信息采用 try-except- 程序结构. 如下所示: try: print(x) except Exception as e: print(e) 1. str(e) 返回字符串类型,只给出异常信息,不包括异常信息的类型,如: try: print(x) except Exception as e: print(str(e)) 打印结

  • Python如何获取模块中类以及类的属性方法信息

    目录 一.sys.modules模块 二.inspect模块 三.python获取模块中所有类的实例 总结 一.sys.modules模块 sys.modules是一个全局字典,python启动后就将该字典加载在内存中,每当导入新的模块时sys.modules都将记录这些导入模块.字典sys.modules对于加载模块起到了缓冲的作用. sys.modules拥有字典所拥有的一切方法.如: import sys print(sys.modules[__name__]) print(sys.mod

  • Python中BeautifulSoup通过查找Id获取元素信息

    比如如下的html 他是在span标签下的class为name,id为is-like-span 这样就可以通过这样的代码进行方法: isCliked = soup.find('span', id = 'is-like-span' 通过这种方式去获取即可,如果里面的为字符串则调用get_text()即可 到此这篇关于Python中BeautifulSoup通过查找Id获取元素信息的文章就介绍到这了,更多相关BeautifulSoup Id获取元素信息内容请搜索我们以前的文章或继续浏览下面的相关文章

  • 基于Python获取亚马逊的评论信息的处理

    目录 一.分析亚马逊的评论请求 二.获取亚马逊评论的内容 三.亚马逊评论信息的处理 四.代码整合 4.1代理设置 4.2while循环翻页 总结 上次亚马逊的商品信息都获取到了,自然要看一下评论的部分.用户的评论能直观的反映当前商品值不值得购买,亚马逊的评分信息也能获取到做一个评分的权重. 亚马逊的评论区由用户ID,评分及评论标题,地区时间,评论正文这几个部分组成,本次获取的内容就是这些. 测试链接:https://www.amazon.it/product-reviews/B08GHGTGQ2

  • 详解如何使用Python网络爬虫获取招聘信息

    目录 前言 项目目标 项目准备 反爬措施 项目实现 效果展示 小结 前言 现在在疫情阶段,想找一份不错的工作变得更为困难,很多人会选择去网上看招聘信息.可是招聘信息有一些是错综复杂的.而且不能把全部的信息全部罗列出来,以外卖的58招聘网站来看,资料整理的不清晰. 项目目标 获取招聘信息,并批量把地点. 公司名.工资 .下载保存在txt文档. 项目准备 软件:PyCharm 需要的库:requests.lxml.fake_useragent 网站如下: https://gz.58.com/job/

  • python实现对svn操作及信息获取

    目录 一.实现效果 二.完整代码 三.结果展示.代码解析 1.上述代码最终会有两个输出展示 2.代码解析 一.实现效果 1.通过python获取路径下所有文件的svn状态 2.通过python对svn进行"提交.删除.锁.解锁.删除等操作" 3.通过svn打开小乌龟界面 二.完整代码 """ SVN状态对照表 """ class FileState: Normal = 0 # 000000 正常在svn管理下的最新的文件 Re

  • Python Selenium自动化获取页面信息的方法

    1.获取页面title title:获取当前页面的标题显示的字段 from selenium import webdriver import time browser = webdriver.Chrome() browser.get('https://www.baidu.com') #打印网页标题 print(browser.title) #输出内容:百度一下,你就知道 2.获取页面URL current_url:获取当前页面的URL from selenium import webdriver

  • Python爬虫获取基金基本信息

    目录 1 前言 2 如何抓取基本信息 3 xpath 获取数据 4 bs4 获取数据 5 最终结果展现 1 前言 上篇文章Python爬虫获取基金列表我们已经讲述了如何从基金网站上获取基金的列表信息.这一骗我们延续上一篇,继续分享如何抓取基金的基本信息做展示.展示的内容包括基金的基本信息,诸如基金公司,基金经理,创建时间以及追踪标.持仓明细等信息. 2 如何抓取基本信息 # 在这里我就直接贴地址了,这个地址的获取是从基金列表跳转,然后点基金概况就可以获取到了. http://fundf10.ea

  • Python爬虫获取基金变动信息

    目录 1 前言 2 抓取变动信息 2.1 基金的变动信息获取 2.2 基金阶段信息的抓取 3 最终结果展现 1 前言 前面文章Python爬虫获取基金列表.Python爬虫获取基金基本信息我们已经介绍了怎么获取基金列表以及怎么获取基金基本信息,本文我们继续前面的内容,获取基金的变动信息.这次获取信息的方式将组合使用页面数据解析和api接口调用的方式进行. 2 抓取变动信息 我们通过观察基金基本信息页面,我们可以发现有关基金变动信息的页面可以包含以下4个部分: 接下来说一下我们抓取数据的思路,在第

  • Python爬虫获取基金列表

    目录 1 前言 2 哪里去获取数据呢 3 怎么抓取数据呢 1 前言 python爬虫用来收集数据是最直接和常用的方法,可以使用python爬虫程序获得大量的数据,从而变得非常的简单和快速:绝大多数网站使用了模板开发,使用的模板可以快速生成大量相同布局不同内容的页面,这时只需要为一个页面开发爬虫程序,因为爬虫程序也可以对同一模板生成的不同内容进行爬取内容 2 哪里去获取数据呢 这里给大家准备好了,打开这个连接,就能找看到对应的基金信息: http://fund.eastmoney.com/jzzz

  • 详解用Python爬虫获取百度企业信用中企业基本信息

    一.背景 希望根据企业名称查询其经纬度,所在的省份.城市等信息.直接将企业名称传给百度地图提供的API,得到的经纬度是非常不准确的,因此希望获取企业完整的地理位置,这样传给API后结果会更加准确. 百度企业信用提供了企业基本信息查询的功能.希望通过Python爬虫获取企业基本信息.目前已基本实现了这一需求. 本文最后会提供具体的代码.代码仅供学习参考,希望不要恶意爬取数据! 二.分析 以苏宁为例.输入"江苏苏宁"后,查询结果如下: 经过分析,这里列示的企业信息是用JavaScript动

  • python爬虫之基金信息存储

    目录 1 前言 2 信息存储 2.1 基金基本信息存储 2.2 基金变动信息获取 3 需要改进的地方 3.1 基金类型 3.2 基金的更新顺序 4 总结 1 前言 前面已经讲了很多次要进行数据存储,终于在上一篇中完成了数据库的设计,在这一篇就开始数据的存储操作,在数据存储的这个部分,会将之前抓取到的基金列表,基金基本信息和基金变动信息以及ETF信息进行存储. 2 信息存储 2.1 基金基本信息存储 在这里获取基金信息包括两个部分,一部分是场外基金另外一部分是场外基金信息.之在前的文章中,我们已经

  • Python爬虫获取整个站点中的所有外部链接代码示例

    收集所有外部链接的网站爬虫程序流程图 下例是爬取本站python绘制条形图方法代码详解的实例,大家可以参考下. 完整代码: #! /usr/bin/env python #coding=utf-8 import urllib2 from bs4 import BeautifulSoup import re import datetime import random pages=set() random.seed(datetime.datetime.now()) #Retrieves a list

  • python爬虫获取淘宝天猫商品详细参数

    首先我是从淘宝进去,爬取了按销量排序的所有(100页)女装的列表信息按综合.销量分别爬取淘宝女装列表信息,然后导出前100商品的 link,爬取其详细信息.这些商品有淘宝的,也有天猫的,这两个平台有些区别,处理的时候要注意.比如,有的说"面料".有的说"材质成分",其实是一个意思,等等.可以取不同的链接做一下测试. import re from collections import OrderedDict from bs4 import BeautifulSoup

  • python爬虫获取小区经纬度以及结构化地址

    本文实例为大家分享了python爬虫获取小区经纬度.地址的具体代码,供大家参考,具体内容如下 通过小区名称利用百度api可以获取小区的地址以及经纬度,但是由于api返回的值中的地址形式不同,所以可以首先利用小区名称进行一轮爬虫,获取小区的经纬度,然后再利用经纬度Reverse到小区的结构化的地址.另外小区名称如果是'...号',可以在爬虫开始之前在'号'之后加一个'院',得到的精确度更高.这次写到程序更加便于二次利用,只需要给程序传递一个dataframe就可以坐等结果了.现在程序已经写好了,就

  • python爬虫获取新浪新闻教学

    一提到python,大家经常会提到爬虫,爬虫近来兴起的原因我觉得主要还是因为大数据的原因,大数据导致了我们的数据不在只存在于自己的服务器,而python语言的简便也成了爬虫工具的首要语言,我们这篇文章来讲下爬虫,爬取新浪新闻 1. 大家知道,爬虫实际上就是模拟浏览器请求,然后把请求到的数据,经过我们的分析,提取出我们想要的内容,这也就是爬虫的实现 大家知道,爬虫实际上就是模拟浏览器请求,然后把请求到的数据,经过我们的分析,提取出我们想要的内容,这也就是爬虫的实现 2.首先,我们要写爬虫,可以借鉴

  • 使用python爬虫获取黄金价格的核心代码

    继续练手,根据之前获取汽油价格的方式获取了金价,暂时没钱投资,看看而已 #!/usr/bin/env python # -*- coding: utf-8 -*- """ 获取每天黄金价格 @author: yufei @site: http://www.antuan.com 2017-05-11 """ import re import urllib2,urllib import random import threading import t

随机推荐