# -*- coding: utf-8 -*-import sys
from lxml import etree
import time
import random
import requests
import json
import csv
from selenium import webdriver   # 导入webdriver模块
from bs4 import BeautifulSoup
from time import sleepclass ChengxingspiderItem:def __init__(self):self.fund_code = ""self.fund_name = ""self.fund_price = ""self.category = ""self.inception = ""self.subscribe = ""self.redeem = ""self.sbdesc = ""self.sharprate = ""self.date = ""self._i = 0def __iter__(self):return selfdef __next__(self):if self._i == 0:self._i += 1return self.fund_codeelif self._i == 1:self._i += 1return self.fund_nameelif self._i == 2:self._i += 1return self.fund_priceelif self._i == 3:self._i += 1return self.categoryelif self._i == 4:self._i += 1return self.sharprateelif self._i == 5:self._i += 1return self.dateelse:raise StopIteration()class FundSpider():name = 'fund'allowed_domains = ['cn.morningstar.com/quicktake/']# fund_list = ['0P0000Z821', 'F0000003VJ', '0P00016WFU', 'F000000416', 'F0000004AI',#             '0P00015HFT', 'F0000003ZX', '0P000147K8', '0P0000P5UD', '0P0001606X']fund_list = ['0P0000RU7I', '0P0000S0NU', '0P0000XBF0', '0P0000YXTA', '0P0000Z5JW', '0P0000ZEAH', '0P00015WGK', '0P0001606X', '0P000160TK', '0P00016A08', '0P00016DKC','0P00016FT6', '0P000178CP', '0P00018J2K', '0P00018KU4', '0P0001ABM2', '0P0001D6IU', '0P0001F1K9', '0P0001FDKQ', 'F0000003VJ', 'F0000004AI', 'F0000004JE']start_urls = [f'http://cn.morningstar.com/quicktake/{page}' for page in fund_list]# json_url = 'http://cn.morningstar.com/handler/quicktake.ashx'url = 'http://cn.morningstar.com/handler/quicktake.ashx'webUrl = 'http://cn.morningstar.com/quicktake/'def parse(self, response):# 把网页变成xpath结构fund_xpath = etree.HTML(response)item = ChengxingspiderItem()fund_name = fund_xpath.xpath('//*[@id="qt_fund"]/span[1]/text()')fund_price = fund_xpath.xpath('//*[@id="qt_base"]/ul[1]/li[2]/span/text()')date = fund_xpath.xpath('//*[@id="qt_base"]/ul[1]/li[3]/text()')category = fund_xpath.xpath('//*[@id="qt_base"]/ul[3]/li[7]/span/text()')sharprate = fund_xpath.xpath('//*[@id="qt_risk"]/li[30]/text()')item.fund_code = fund_name[0][:6]item.fund_name = fund_name[0][7:]item.fund_price = fund_price[0]if len(category) != 0:item.category = category[0]if len(sharprate) != 0:item.sharprate = sharprate[0]item.date = date[0][5:]print(item.fund_code)print(item.fund_name)print(item.fund_price)print(item.category)print(item.sharprate)# print(len(date[0]))# print(type(item['date']))# print(type(fund_price))# print(dir(fund_price))# print(len(str(date)))# print(str(date)[-12:-1])return list(item)if __name__ == '__main__':# headers = {'User-Agent':#           'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36',#           'Host': 'cn.morningstar.com'#          }fs = FundSpider()# 指定chrom的驱动# 执行到这里的时候Selenium会到指定的路径将chrome driver程序运行起来# driver = webdriver.Chrome('./chromedriver/chromedriver.exe')# driver = webdriver.Firefox()#这里是火狐的浏览器运行方法options = webdriver.ChromeOptions()options.add_argument("--no-sandbox")driver = webdriver.Chrome('./chromedriver/chromedriver.exe', chrome_options=options)cookies = ''headers = ['fund_code', 'fund_name','fund_price', 'category', 'sharprate', 'date']rows = []for urlitem in fs.start_urls:# soup = BeautifulSoup(html_doc, 'html.parser')if(cookies == ''):# 可以通过 id 获取 form 表单driver.get(urlitem)username = driver.find_element_by_id('emailTxt')password = driver.find_element_by_id('pwdValue')username.send_keys('***********@qq.com')password.send_keys('w*************')submit = driver.find_element_by_id('loginGo')submit.click()sleep(1)# 获取网站cookiecookies = driver.get_cookies()else:# driver.add_cookie(cookies)driver.get(urlitem)singlerow = fs.parse(driver.page_source)rows.append(singlerow)# reobj = requests.get(urlitem, headers=headers)  # 对HTTP响应的数据# fs.parse(reobj)with open('test.csv', 'w', newline='')as f:f_csv = csv.writer(f)f_csv.writerow(headers)f_csv.writerows(rows)

如图:


CSV示例

import csvheaders = ['class', 'name', 'sex', 'height', 'year']rows = [[1, 'xiaoming', 'male', 168, 23],[1, 'xiaohong', 'female', 162, 22],[2, 'xiaozhang', 'female', 163, 21],[2, 'xiaoli', 'male', 158, 21]
]with open('test.csv', 'w',newline='')as f:f_csv = csv.writer(f)f_csv.writerow(headers)f_csv.writerows(rows)

如图:

下载地址

Python爬取晨星网的基金数据相关推荐

  1. python爬取火车票网的时刻表数据

    python爬取火车票网的时刻表数据 导包 import re,requests,datetime,time,json from prettytable import PrettyTable from ...

  2. Python爬取天气网历史天气数据

    我的第一篇博客,哈哈哈,记录一下我的Python进阶之路! 今天写了一个简单的爬虫. 使用Python的requests 和BeautifulSoup模块,Python 2.7.12可在命令行中直接使 ...

  3. 使用python爬取东方财富网机构调研数据

    最近有一个需求,需要爬取东方财富网的机构调研数据.数据所在的网页地址为: 机构调研 网页如下所示: 可见数据共有8464页,此处不能直接使用scrapy爬虫进行爬取,因为点击下一页时,浏览器只是发起了 ...

  4. python培训机构调研最多的股票_使用python爬取东方财富网机构调研数据

    标签: 最近有一个需求,需要爬取东方财富网的机构调研数据.数据所在的网页地址为: 机构调研 网页如下所示: 可见数据共有8464页,此处不能直接使用scrapy爬虫进行爬取,因为点击下一页时,浏览器只 ...

  5. python二手房价格预测_Python爬取赶集网北京二手房数据R对爬取的二手房房价做线性回归分析...

    前言:本文主要分为两部分:Python爬取赶集网北京二手房数据&R对爬取的二手房房价做线性回归分析.文章思路清晰,代码详细,特别适合刚刚接触Python&R的同学学习参考. Part1 ...

  6. python爬取东方财富网资金流向数据(在本地生成csv文件)

    今天我们来试着用python爬取东方财富网资金流向的表格数据. 第一步:程序及应用的准备 首先我们需要安装selenium库,使用命令pip install selenium;然后我们需要下载对应的c ...

  7. 用python爬取高考网历年高考分数线将数据放入MySQL并绘制图表

    用python爬取高考网历年高考分数线 # 导入爬虫的库 import requests from lxml import etree # 导入画图库 from pyecharts.charts im ...

  8. 爬取东方财富网股票行情数据和资讯

    爬取东方财富网股票行情数据和资讯 这个需求源于我的一个练手项目 本篇博客参考:https://zhuanlan.zhihu.com/p/50099084 该博客介绍的东西本博客不做论述 使用技术: 语 ...

  9. 利用python爬取东方财富网股吧评论并进行情感分析(一)

    利用python爬取东方财富网股吧评论(一) python-东方财富网贴吧文本数据爬取 分享一下写论文时爬数据用到的代码,有什么问题或者改善的建议的话小伙伴们一起评论区讨论.涉及内容在前人的研究基础之 ...

最新文章

  1. Python中的collections模块的相关练习
  2. Objective-C语法之动态类型(isKindOfClass, isMemberOfClass,id)等
  3. ubuntu 升级nodejs 和 npm
  4. C++ Primer 5th笔记(chap 17 标准库特殊设施)控制输入格式
  5. SQL Server 2005中, 创建维护计划时出现错误信息: 创建维护计划 失败
  6. winsows10下用ninja编译配置caffe
  7. jmeter生成html报告修改,jmeter:测试后生成html报告
  8. 201612-5 卡牌游戏
  9. Android应用Design Support Library完全使用实例
  10. 使用css控制gridview控件的样式,GridView 样式美化及应用.doc
  11. 路由与交换技术(常用版)
  12. P问题、NP问题、NPC问题、NP hard问题
  13. Java 并发编程如何入门
  14. python pdf转为图片
  15. 考计算机证书指南,计算机二级证书:备考和实战指南--教育频道[温州网]
  16. 英语论文应该怎么查重?
  17. GPT介绍-GUID分区表
  18. GLSL——绘制平面图形(二)
  19. 上海市高新技术企业各区奖励政策汇总2022版
  20. 2021-06-03 【论文笔记】Cross-domain Correspondence Learning for Exemplar-based Image Translation

热门文章

  1. 计算机专业买笔记本8g内存够吗,笔记本电脑8g内存够用吗_笔记本8G内存够不够用-win7之家...
  2. Golang获取命令行参数的方式
  3. Freenas的Samba共享功能和块级存储iscsi的使用
  4. SAS IF判断语句
  5. 买5G还是等鸿蒙,华为新机基本没跑了,除了5G之外,鸿蒙系统是最大亮点
  6. 汇丰银行java框架_汇丰银行面试经历(IT类).doc
  7. c++读取文件名称(windows)
  8. Java Web 图书管理系统
  9. C语言typedef详解
  10. Windows7下IE8不能使用招商银行的专业版解决方法