IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> python爬取东方财富网资金流向数据并存入MySQL中 -> 正文阅读

[大数据]python爬取东方财富网资金流向数据并存入MySQL中

今天我们来试着用python爬取东方财富网资金流向的表格数据。

第一步:程序及应用的准备

首先我们需要安装selenium库,使用命令pip install selenium;然后我们需要下载对应的chromedriver,安装网址:http://chromedriver.storage.googleapis.com/index.html,安装教程:Windows下载及安装chromedriver.exe_mry6的博客-CSDN博客_chromedriver.exe。我们的chromedriver.exe应该是在C:\Program Files\Google\Chrome\Application中(即让它跟chrome.exe在同一个文件下)。

下载完成后,我们还需要做两件事:1.配置环境变量;

?2.将chromedriver.exe拖到python文件夹里,因为我用的是anaconda,所以我直接是放入D:\Anaconda中的。

?此时,我们所需的应用已经准备好了。

第二步:进入我们要爬取的网页(东旭蓝天(000040)资金流向 _ 数据中心 _ 东方财富网),按F12进入调试模式.<div> 可定义文档中的分区或节,可以对同一个 <div> 元素应用 class 或 id 属性,但是更常见的情况是只应用其中一种。这两者的主要差异是,class 用于元素组(类似的元素,或者可以理解为某一类元素),而 id 用于标识单独的唯一的元素。

?当我们依次点击右侧div时,我们可以发现,我们想要爬取的数据对应的代码为右侧蓝色部分,而下方的<table>表示整个表格,<thead>表示我们的表头即文字部分,<tbody>表示表头下方的数据部分。

?

?我们可以发现,<thead>跟<tbody>的每一行都是以<tr>开始,以<tr>结束的;在<thead>中,每一个格子是以<th>开始,以<th>结束的;在<tbody>中,每一个格子是以<td>开始,以<td>结束的。至此,我们对要爬取的数据的构成有了一个大概的认知。

第三步:编写程序

etree.HTML()可以用来解析字符串格式的HTML文档对象,将传进去的字符串转变成_Element对象。作为_Element对象,可以方便的使用getparent()、remove()、xpath()等方法。

options常用属性及方法为:

  • binary_location='':指定Chrome浏览器路径
  • debuger_address=':指定调试路径
  • headless: 无界面模式
  • add_argument():添加启动参数
  • add_extension:添加本地插件
  • add_experimental_option:添加实验选项
  • to_capablilities:将options转为标准的capablitiies格式

selenium的page_source方法可以获取到页面源码,提取出我们需要的信息。

div[@class="dataview"表示我们通过class属性的值定位到我们要爬取的表格div,‘/table’则是表示<div>的下一级<table>目录。

XPath 使用路径表达式在 XML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。 下面列出了最有用的路径表达式:

表达式描述
nodename选取此节点的所有子节点。
/从根节点选取(取子节点)。
//从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置(取子孙节点)。
.选取当前节点。
..选取当前节点的父节点。
@选取属性。
a:  打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
from selenium import webdriver  #导入模块,selenium导入浏览器驱动,用get方法打开浏览器
import time
import re
import csv  #存储数据
from lxml import etree #数据的解析

option = webdriver.ChromeOptions()   #网址获取
option.add_argument('headless')  #无界面启动,即设置浏览器静默
#等价于 options.headless=True
driver = webdriver.Chrome(options=option)  
#等价于 driver = webdriver.Chrome(desired_capabilities=options.to_capablities())
driver.get('https://data.eastmoney.com/zjlx/000040.html') #打开浏览器
time.sleep(2) #推迟调用线程的运行,可表示进程挂起的时间,这里让他推迟执行2秒

source = driver.page_source #获取页面源码
mytree = etree.HTML(source) #解析网页内容
tables = mytree.xpath('//div[@class="dataview"]/table') #定位表格
for i in range(len(tables)): #循环表格
    onetable = []
    trs = tables[i].xpath('.//tr') #取出所有tr标签
    for tr in trs:
        ui = []
        for td in tr:
            texts = td.xpath(".//text()") #取出所有td标签下的文本
            mm = []
            for text in texts:
                mm.append(text.strip("")) #去掉所有空格、换行符
            ui.append(','.join(mm))
        onetable.append(ui) #整张表格

with open('data.csv', 'a', newline='') as file: #将数据写入文件
    csv_file = csv.writer(file)
    for i in onetable:
        csv_file.writerow(i) #按行写入

time.sleep(2)
driver.close() #关闭当前窗口

这样我们就可以把一个股票的历史资金流向的数据放在一个csv文件里了,接下去考虑到存储问题,我们可以尝试连接MySQL,将数据放入MySQL中。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-10-19 11:57:30  更:2021-10-19 11:58:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:44:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码