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 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 财经股票数据之网络爬虫技术 -> 正文阅读

[Java知识库]财经股票数据之网络爬虫技术

? ? ? ? 前言

????????目前互联网高度发达,网络上传输着各种各样的数据,如果想要获取某种数据可以通过搜索引擎获取。其实搜索引擎的背后也是通过网络爬虫去获取数据,作为基础数据,再经过数据清洗等处理,搜索引擎再对处理之后的数据建立索引,使得我们在查询的时候,能够快速检索到。当然其中的过程是很复杂的,不是本篇文章能描述清楚的,也不是本篇文章的内容。

???????经过分析,目前的爬虫框架挺多的,根据不同的应用场景,有对应的框架;针对搜索引擎,有分布式的网络爬虫;也有针对特定领域的精细化爬取。

????????本文主要介绍webmagic框架,抓取股市页面数据。页面分为静态页面,动态页面,动态页面是通过js渲染的,Ajax发起的请求。在动态Ajax渲染页面上,magicweb框架是没办法处理,所以需要借助浏览器驱动器来获取,webmagic集成selenium组件。

????????接下来就是抓取股市财经页面的例子,实现自动化获取相关信息,减少人为浏览页面耗费的时间,同时可以根据相关规则,做到实时告警,同时也可以获取历史数据,进行本地化计算和分析,对于财经朋友来说简直就是事半功倍。

代码:

首先是pom.xml文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
?????????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
?????????xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
????<modelVersion>4.0.0</modelVersion>

????<groupId>org.spider</groupId>
????<artifactId>web-spider</artifactId>
????<version>1.0-SNAPSHOT</version>
????<parent>
????????<groupId>org.springframework.boot</groupId>
????????<artifactId>spring-boot-starter-parent</artifactId>
????????<version>2.6.3</version>
????</parent>
????<properties>
????????<maven.compiler.source>8</maven.compiler.source>
????????<maven.compiler.target>8</maven.compiler.target>
????</properties>
????<dependencies>
????????<dependency>
????????????<groupId>org.springframework.boot</groupId>
????????????<artifactId>spring-boot-starter-web</artifactId>
????????</dependency>

????????<dependency>
????????????<groupId>us.codecraft</groupId>
????????????<artifactId>webmagic-core</artifactId>
????????????<version>0.7.5</version>
????????????<exclusions>
????????????????<exclusion>
????????????????????<groupId>org.slf4j</groupId>
????????????????????<artifactId>slf4j-log4j12</artifactId>
????????????????</exclusion>
????????????</exclusions>
????????</dependency>
????????<dependency>
????????????<groupId>us.codecraft</groupId>
????????????<artifactId>webmagic-extension</artifactId>
????????????<version>0.7.5</version>
????????????<exclusions>
????????????????<exclusion>
????????????????????<groupId>org.slf4j</groupId>
????????????????????<artifactId>slf4j-log4j12</artifactId>
????????????????</exclusion>
????????????</exclusions>
????????</dependency>

????????<dependency>
????????????<groupId>us.codecraft</groupId>
????????????<artifactId>webmagic-selenium</artifactId>
????????????<version>0.7.5</version>
????????</dependency>


????????<dependency>
????????????<groupId>org.projectlombok</groupId>
????????????<artifactId>lombok</artifactId>
????????????<optional>true</optional>
????????</dependency>

????????<dependency>
????????????<groupId>com.alibaba</groupId>
????????????<artifactId>fastjson</artifactId>
????????????<version>1.2.46</version>
????????</dependency>

????????<dependency>
????????????<groupId>org.seleniumhq.selenium</groupId>
????????????<artifactId>selenium-java</artifactId>
????????????<version>3.0.1</version>
????????</dependency>
????????<dependency>
????????????<groupId>org.seleniumhq.selenium</groupId>
????????????<artifactId>selenium-chrome-driver</artifactId>
????????????<version>3.0.1</version>
????????</dependency>
????????<dependency>
????????????<groupId>org.seleniumhq.selenium</groupId>
????????????<artifactId>selenium-server</artifactId>
????????????<version>2.18.0</version>
????????</dependency>
????????<dependency>
????????????<groupId>com.google.code.gson</groupId>
????????????<artifactId>gson</artifactId>
????????????<version>2.2.4</version>
????????</dependency>
????</dependencies>

</project>


接下来是pageProcessor代码,也就是页面提取,类ReportPageProcessor如下:

/**
?* 公司公告爬取接口
?*/
public class ReportPageProcessor implements PageProcessor {
????private Site site = Site.me().setRetryTimes(3).setSleepTime(100)
// ???????????.addHeader("Connection", "keep-alive")
// ???????????.addHeader("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9")
// ???????????.addHeader("Cache-Control","no-cache")
// ???????????.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36")
????????????;

????/**
?????* process the page, extract urls to fetch, extract the data and store
?????*
?????* @param page page
?????*/
????@Override
????public void process(Page page) {
????????// System.out.println("==========html:"+page.getHtml().toString());
????????String content = page.getHtml().xpath("//table[@class='table2']/tbody/tr/td/div/ul/a/text()").nodes().toString();


????????System.out.println("=========content:"+content);
????}

????/**
?????* get the site settings
?????*
?????* @return site
?????* @see Site
?????*/
????@Override
????public Site getSite() {
????????return site;
????}

????public static void main(String[] args) {
????????System.setProperty("selenuim_config", "E:\\develop\\webmagic\\config.ini");
????????ReportPageProcessor pageProcessor = new ReportPageProcessor();
????????SeleniumDownloader downloader = new SeleniumDownloader("E:\\develop\\webmagic\\chromedriver_win32\\chromedriver.exe");
????????Spider.create(pageProcessor).addUrl("http://vip.stock.finance.sina.com.cn/corp/go.php/vCB_AllBulletin/stockid/600507.phtml")
????????????????.setDownloader(downloader)
????????????????.thread(5).run();
????}
}

其中需要注意:

需要设置系统参数(config.ini文件),以及配置Google浏览器驱动chromedriver.exe,注意浏览器驱动需要与自己本地的chrome浏览器版本一致;目前演示的chromedriver.exe适合chrome浏览器版本?97.0.4692.99。文章末尾会给出源代码、config.ini、以及chromedriver.exe的获取方式;

抓取结果:

接下来对运行结果进行说明:

1、先查看目标页面的结构,在浏览器中输入如下地址:http://vip.stock.finance.sina.com.cn/corp/go.php/vCB_AllBulletin/stockid/600507.phtml,再按F12分析页面,找到想要抓取的数据,本例是想抓取所有的公告信息数据。页面如下:

2、上述目标对应的代码如下:

String content = page.getHtml().xpath("//table[@class='table2']/tbody/tr/td/div/ul/a/text()").nodes().toString();

3、得到的结果如下:

附:本地chrome浏览器版本可以通过如下步骤查看:

打开chrome浏览器=》点击右上角3个点

然后点击设置=》关于chrome

获得相应的版本号:

源代码或者相关文件获取方式:

请关注公众号: 纵横股宇CTO,回复:webmagic

以上信息请合理合法使用,如果使用不当,自行承担相应后果。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-02-05 21:35:51  更:2022-02-05 21:36:39 
 
开发: 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 10:26:20-

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