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 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 基于selenium爬取资金流向图 -> 正文阅读

[开发测试]基于selenium爬取资金流向图

基于selenium爬取华联控股资金一览流向图

由于资金一览流向图是由网页动态加载的数据无法通过普通的requests模块获取,而通过selenium模块对动态数据的抓取更加便捷。

爬虫基本流程:对指定url发起请求,获取源码数据,解析数据

selenium模块

使用的流程

环境安装:pip install selenium

下载浏览器的驱动程序:

http://npm.taobao.org/mirrors/chromedriver/

实例化一个浏览器对象:

from selenium import webdriver
bro=webdriver.Chrome(executable_path='./chromedriver.exe')##返回一个浏览器对象

让浏览器对指定url发起一个请求

bro.get('https://data.eastmoney.com/zjlx/000036.html')

获取浏览当前页面的源码数据

page_text=bro.page_source

通过xpath解析数据

通过selenium模块得到的页面源码数据通过xpath进行定位解析。

xpath数据解析流程

环境安装:pip install lxml

实例化一个etree对象

from lxml import etree
tree=etree.HTML(page_text)
xpath标签定位和文本数据的获取

标签定位

## / 表示一个层级
tree.xpath('/html/dody/div')##返回的是列表,并且是element队形
## // 表示多个层级
tree.xpath('/html//div')##返回页面所有标签为div的对象
## 属性定位
tree.xpath('//div[@class='main']')##返回class属性值为main的div
## 索引定位:有多个相同标签定位其中某个标签。注意:索引从1开始
tree.xpath('//*[@id="table_ls"]/table/tbody/tr[1]')

获取文本:text() 返回的是列表

## /text() 只能获取所定位标签下的直系文本数据
tree.xpath('//*[@id="table_ls"]/table/tbody/tr[1]/td[1]/text()')
## //text() 能够获取所定位标签下的所有文本数据
tree.xpath('//*[@id="table_ls"]/table/tbody/tr[1]//text()')

获取标签之间的属性值

tree.xpath('....../@atrrName')#atrrName为属性值的标签
对通过selenium爬取的页面源码数据进行解析
tr2=tree.xpath('//*[@id="table_ls"]/table/tbody/tr')##获取tbody下的所有tr标签
for j in range(len(tr2)):
    data=tr2[j].xpath('.//text()')

将解析到的数据写入mysql数据库

数据写入流程

连接mysql

import pymysql
conn = pymysql.connect(
    host= 'localhost',
    user= 'root',
    passwd='',
    database='family',
    port=3306 ,
    charset='utf8'
)

创建数据表

cursor = conn.cursor()
##创建mysql数据表
cursor.execute("drop table if exists 华联控股资金一览流向表")
sql = """
        create table 华联控股资金一览流向表(
        日期 VARCHAR(255),
        收盘价 VARCHAR(255),
        涨跌幅 VARCHAR(255),
        主力净流入净额 VARCHAR(255),
        主力净流入净占比 VARCHAR(255),
        超大单净流入净额 VARCHAR(255),
        超大单净流入净占比 VARCHAR(255),
        大单净流入净额 VARCHAR(255),
        大单净流入净占比 VARCHAR(255),
        中单净流入净额 VARCHAR(255),
        中单净流入净占比 VARCHAR(255),
        小单净流入净额 VARCHAR(255),
        小单净流入净占比 VARCHAR(255)
        )
    """
cursor.execute(sql)
sql1 = """insert into 华联控股资金一览流向表
values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)""" 

插入数据

cursor.execute(sql1,data)##data为将要向mysql插入的数据

完整代码如下:

from selenium import webdriver
from lxml import etree
import pymysql
conn = pymysql.connect(
    host= 'localhost',
    user= 'root',
    passwd='',
    database='family',
    port=3306 ,
    charset='utf8')
cursor = conn.cursor()
##创建mysql数据表
cursor.execute("drop table if exists 华联控股资金一览流向表")
sql = """
        create table 华联控股资金一览流向表(
        日期 VARCHAR(255),
        收盘价 VARCHAR(255),
        涨跌幅 VARCHAR(255),
        主力净流入净额 VARCHAR(255),
        主力净流入净占比 VARCHAR(255),
        超大单净流入净额 VARCHAR(255),
        超大单净流入净占比 VARCHAR(255),
        大单净流入净额 VARCHAR(255),
        大单净流入净占比 VARCHAR(255),
        中单净流入净额 VARCHAR(255),
        中单净流入净占比 VARCHAR(255),
        小单净流入净额 VARCHAR(255),
        小单净流入净占比 VARCHAR(255)
        )
    """
cursor.execute(sql)
sql1 = """insert into 华联控股资金一览流向表 values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)""" 
bro=webdriver.Chrome(executable_path='./chromedriver.exe')
bro.get('https://data.eastmoney.com/zjlx/000036.html')
##获取响应页面的源码数据
page_text=bro.page_source
###标签定位并解析数据
##实例化对象
tree=etree.HTML(page_text)
##定位
tr2=tree.xpath('//*[@id="table_ls"]/table/tbody/tr')
for j in range(len(tr2)):
    data=tr2[j].xpath('.//text()')
    cursor.execute(sql1,tr2[j].xpath('.//text()'))
conn.commit()##保存对数据库的修改
cursor.close()  # 关闭游标
conn.close() ##关闭mysql连接

bro.quit()

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-10-19 12:11:31  更:2021-10-19 12:13:00 
 
开发: 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/18 3:01:44-

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