网络爬虫之东方财富网股票板块

本文介绍如何使用网络爬虫抓取东方财富网的股票板块数据,包括抓包分析、项目框架、数据模型、数据库操作及定时任务实现。详细讲解了各模块的功能,如HTTPUtils、TimeUtils和Jsoup解析,并提供了数据表创建和主方法的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文为原创博客,仅供技术学习使用。未经允许,禁止将其复制下来上传到百度文库等平台。如有转载请注明本文博客的地址(链接)。
源码或者jar包如有需要请联系:2428607276@qq.com

  • 要抓取的数据
  • 抓包
  • 框架
  • model
  • 建立数据表
  • 主方法
  • util
  • parse
  • db
  • job和jobmain

要抓取的数据

这个项目要抓取的是东方财富网的板块数据。
链接为http://quote.eastmoney.com/center/BKList.html#trade_0_0?sortRule=0
这里写图片描述


抓包

抓包具体请看我之前的博客。
链接为http://blog.csdn.net/qq_22499377/article/details/78114734


框架

本文使用的框架,如下图所示:
这里写图片描述
db:主要放的是数据库操作文件,包含MyDataSource和MYSQLControl。
model:用来封装对象,将要操作的对象的属性封装起来。
parse:这里面存放的是针对util获取的文件,进行解析,一般采用Jsoup解析。
main:程序起点,用来获取数据,执行数据库语句以及存放数据。
job:用来执行的job任务。
jobmain:控制器,即设定执行一次job的时间。股票数据每天下午3点钟收盘,即设置为3点钟以后的某个时间点开始爬行相关股票数据。


model

model用来封装我要爬的数据,如当天的日期,板块的id,板块的名称,板块价格等等。如下面程序:

package model;

//创建对象及我们爬取的数据内容包含以下字段
public class ExtMarketPlateModel {
   
    private String date;
    private String plate_rank;
    private String plate_id;
    private String plate_name;
    private float plate_price;
    private float plate_change;
    private float plate_range;
    private String plate_market_value;
    private float plate_turnover_rate;
    private String craw_time;
    public String getDate() {
        return date;
    }
    public void setDate(String date) {
        this.date = date;
    }
    public String getPlate_rank() {
        return plate_rank;
    }
    public void setPlate_rank(String plate_rank) {
        this.plate_rank = plate_rank;
    }
    public String getPlate_id() {
        return plate_id;
    }
    public void setPlate_id(String plate_id) {
        this.plate_id = plate_id;
    }
    public String getPlate_name() {
        return plate_name;
    }
    public void setPlate_name(String plate_name) {
        this.plate_name = plate_name;
    }
    public float getPlate_price() {
        return plate_price;
    }
    public void setPlate_price(float plate_price) {
        this.plate_price = plate_price;
    }
    public float getPlate_change() {
        return plate_change;
    }
    public void setPlate_change(float plate_change) {
        this.plate_change = plate_change;
    }
    public float getPlate_range() {
        return plate_range;
    }
    public void setPlate_range(float plate_range) {
        this.plate_range = plate_range;
    }
    public String getPlate_market_value() {
        return plate_market_value;
    }
    public void setPlate_market_value(String plate_market_value) {
        this.plate_market_value = plate_market_value;
    }
    public float getPlate_turnover_rate() {
        return plate_turnover_rate;
    }
    public void setPlate_turnover_rate(float plate_turnover_rate) {
        this.plate_turnover_rate = plate_turnover_rate;
    }
    public String getCraw_time() {
        return craw_time;
    }
    public void setCraw_time(String craw_time) {
        this.craw_time = craw_time;
    }

}

建立数据表

在写程序之前,先根据model的属性来建立数据表。建表的时候,一定要记得注明每一个属性的真实含义,以便以后的人可以轻松交接。

CREATE TABLE `ext_market_plate` (
  `date` date NOT NULL COMMENT '当天日期',
  `plate_rank` char(20) NOT NULL COMMENT '板块排名',
  `plate_id` char(20) NOT NULL COMMENT '板块代码',
  `plate_name` char(50) DEFAULT NULL COMMENT '板块名称',
  `plate_price` float(10,2) DEFAULT NULL COMMENT '板块最新价格',
  `plate_change` float(10,2) DEFAULT NULL COMMENT '涨跌额',
  `plate_range` float(10,4) DEFAULT NULL COMMENT '涨跌幅度',
  `plate_market_value` char(50) DEFAULT 
### 使用Java实现东方财富网舆情相关的网络爬虫 为了使用Java编写一个能够收集东方财富网舆情信息的网络爬虫,可以采用Jsoup库来解析HTML文档并提取所需的信息。下面是一个简单的例子,展示了如何利用Jsoup抓取网页内容。 #### 导入依赖项 首先,在项目中引入Jsoup库。如果使用Maven作为构建工具,则可以在`pom.xml`文件里添加如下依赖: ```xml <dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.15.4</version> </dependency> ``` #### 编写爬虫代码 接下来是具体的爬虫逻辑实现。这里假设目标是从东方财富网上获取特定板块下的帖子列表及其评论区的内容。 ```java import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.select.Elements; public class EastMoneyCrawler { public static void main(String[] args) { try { String url = "https://guba.eastmoney.com/list,000858_1.html"; // 替换成实际要访问的目标页面URL Document doc = Jsoup.connect(url).get(); Elements postTitles = doc.select(".title"); // 获取所有标题元素 for (var title : postTitles) { System.out.println(title.text()); // 进一步深入每篇帖子内部链接... String detailUrl = "https:" + title.attr("href"); Document detailDoc = Jsoup.connect(detailUrl).get(); // 提取消息正文和其他相关信息 Element messageBody = detailDoc.selectFirst("#zwconbody").text(); System.out.println(messageBody); // 抓取回复部分 Elements replies = detailDoc.select(".post_comment_list .comment_txt"); for (Element reply : replies) { System.out.println(reply.text()); } } } catch (Exception e) { e.printStackTrace(); } } } ``` 此段代码实现了基本的功能框架,即连接至指定网址、读取整个页面源码、定位到感兴趣的标签位置以及打印出所选区域内的纯文本[^1]。 需要注意的是,上述示例仅提供了一个基础版本,实际应用时还需要考虑更多因素,比如异常处理机制、反爬策略应对措施等。此外,对于更复杂的场景可能需要用到Selenium这样的浏览器自动化测试工具模拟真实用户的交互行为;而对于动态加载的数据则需借助API接口直接请求服务器端口返回JSON格式的结果集。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值