1、运行环境

selenium 首先要下载chromedriver,chromedriver与google浏览器对应的版本如下表所示:

驱动版本 浏览器对应的版本
ChromeDriver v2.43 (2018-10-16) Supports Chrome v69-71
ChromeDriver v2.42 (2018-09-13) Supports Chrome v68-70

应该没有人用更老的版本了,chromedriver的下载地址如下:
http://npm.taobao.org/mirrors/chromedriver/

2、程序功能

通过twitch的搜索框,搜索给定的关键字,返回视频直播地址的url。
这个使用idea进行编写的程序,打算打包成war运行,所以创建项目的时候配置如下图所示,主要是将jar打包成war:

程序运行的pom文件如下:

<?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><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.1.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>learn</groupId><artifactId>twlive</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><name>twlive</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>3.141.59</version></dependency><dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.10.3</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

对应的application.properties配置文件如下,配置文件里面写的是chromedriver在系统中的绝对路径:

spring.jmx.default-domain=twitch-live
#chorme webdriver的路径
web.driver = C:\\bin\\chromedriver.exe

两个默认的启动类代码如下类1:

package learn.twlive;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;@SpringBootApplication
@EnableScheduling
public class TwliveApplication {public static void main(String[] args) {SpringApplication.run(TwliveApplication.class, args);}
}

类2

package learn.twlive;import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;public class ServletInitializer extends SpringBootServletInitializer {@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder application) {return application.sources(TwliveApplication.class);}
}

定时器运行类如下,配置成50s运行一次,cron在线配置网站链接:http://cron.qqe2.com/ 原来好像没有广告,现在加上了。

package learn.twlive.web;import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.web.bind.annotation.RestController;@RestController
public class Web {@Value("${web.driver}")private String webDriverPath;@Scheduled(cron = "0/50 0 * * * ? ")public void getTwurl(){TwitchSearch twitchSearch = new TwitchSearch();String searchKey = "dota2 psg.lgd";String url = twitchSearch.downLoadSeliunm(searchKey,webDriverPath);if(url!=null)System.out.println(url);}}

具体的搜索类和url提取类如下,需要使用jsoup ,也可以使用selenium自带的选择器:

package learn.twlive.web;import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import org.openqa.selenium.By;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import java.util.ArrayList;public class TwitchSearch {Logger logger = LoggerFactory.getLogger(this.getClass());public String downLoadSeliunm(String keyword,String webDriverPath){String url = "https://www.twitch.tv/";System.setProperty("webdriver.chrome.driver",webDriverPath);//chromedriver服务地址ArrayList<String> command = new ArrayList<String>();//command.add("--headless");ChromeOptions options = new ChromeOptions();options.addArguments(command);WebDriver driver = new ChromeDriver(options);try{driver.manage().window().setSize(new Dimension(1920,1080));driver.get(url);driver.findElement(By.id("nav-search-input")).sendKeys(keyword);String docString = driver.getPageSource();Document doc  =  Jsoup.parse(docString);String liveUrl= parserTwitch(doc);return liveUrl;}catch (Exception ex){logger.info(ex.toString());}finally {driver.quit();}return "";}public String parserTwitch(Document doc){Elements searchResultSectionBlock = doc.getElementsByClass("search-result-section__block");if(searchResultSectionBlock.size()>0){Elements urlA = searchResultSectionBlock.get(0).getElementsByClass("tw-interactive tw-block tw-full-width tw-interactable tw-interactable--inverted");String href = urlA.get(0).attr("href");return  "https://www.twitch.tv"+href;}return "";}
}

一个twitch 直播地址搜索爬虫基于java selenium 和 spring boot相关推荐

  1. spring实战六之使用基于java配置的Spring

    之前接触的都是基于XML配置的Spring,Spring3.0开始可以几乎不使用XML而使用纯粹的java代码来配置Spring应用.使用基于java配置的Spring的步骤如下: 1. 创建基于ja ...

  2. sb版 java后端(spring boot)应用Conflux Java SDK尝试交互Conflux实录

    sb版 java后端(spring boot)应用Conflux-java-尝试链接Conflux实录 2021/5/3 更新: 请看最新博客!!!内容更详实且包含本文所有内容(不删此篇纯粹是因为阅读 ...

  3. 第64节:Java中的Spring Boot 2.0简介笔记

    Java中的Spring Boot 2.0简介笔记 spring boot简介 依赖java8的运行环境 多模块项目 打包和运行 spring boot是由spring framework构建的,sp ...

  4. 直播api接口java_基于JAVA的电视台直播节目时间表api调用代码实例

    代码描述:基于JAVA的电视台直播节目时间表api调用代码实例 接口地址:http://www.juhe.cn/docs/api/id/129 1.[代码][Java]代码 import java.i ...

  5. 基于Java jsp+mysql+Spring的汽车出租平台租赁网站平台设计和实现

    ​​​​​​​主要功能说明: 管理员角色包含以下功能:管理员登录, 用户管理,管理员管理, 订单管理和审核,利润统计, 交易流水管理车辆管理, 汽车品牌管理等功能. 用户角色包含以下功能: 用户登录页 ...

  6. 在Java eclipse 中Spring Boot工具安装步骤

    如何使用Spring Boot一步一步搭建一个Web的基础工程-- 安装eclipse 1 eclipse官网下载地址:https://www.eclipse.org/downloads/ 2 安装e ...

  7. 一款 Java 开源的 Spring Boot 即时通讯 IM 聊天系统

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 开篇 电商平台最不能缺的就是即时通讯,例如通知类下发,客服 ...

  8. Java微框架Spring Boot 运行原理深入解读

    本文节选自< JavaEE开发的颠覆者--Spring Boot实战 >一书.本书从Spring 基础.Spring MVC 基础讲起,从而无难度地引入Spring Boot 的学习.涵盖 ...

  9. 【Java进阶】Spring Boot集成ES

    目录 spring boot集成ES ElasticSearchConfig 测试文档的基本操作 Elasticsearch Clients 文档 spring boot集成ES Java REST ...

最新文章

  1. android相机截取矩形框,Android自定义照相机实现只拍摄矩形区域(重传)
  2. python连接memcached
  3. wxWidgets:异形窗示例
  4. iOS混淆 -- 生成define 替换名
  5. 一致性哈希算法学习及JAVA代码实现分析
  6. Smobiler 4.4 更新预告 Part 1(Smobiler能让你在Visual Studio上开发APP)
  7. 线性表:链栈算法实现
  8. Python并发编程理论篇
  9. linux添加硬盘不重启(vmware下或者虚拟机下面)
  10. android studio中如何替换gradle以防下载卡住
  11. Shiny 版混合线性模型的建模遍历
  12. 笨办法学R编程(4)
  13. 分享几个简单易做的Java小程序,一起动手来试试吧
  14. Idea中的搜索快捷键
  15. 软件工程之软件质量管理(SQA)
  16. JavaScript 计算时间差
  17. App Store 上架审核指北【翻译】
  18. python可视化分析网易云音乐评论_网易云音乐评论 可视化分析
  19. ckeditor引入
  20. 解决办法之Duplicate entry ‘1‘ for key ‘PRIMARY‘

热门文章

  1. java剑士7723,linux 环境下tomcat启动失败问题
  2. 一切为了用户体验:揭秘京东首页改版背后的故事
  3. 最新非常实用的彻底隐藏文件、网络、无线、恢复文件、网络电视等绿色软件下载
  4. 强化学习(一)Deep Q-Network
  5. 鸿蒙os和麒麟os的区别,华为终端最受关注十大功能技术:鸿蒙OS第二、第一国产最强...
  6. java自动换行方法_自动换行的实现方法zz
  7. 那些回不去的年少时光(桐华)
  8. Word中公式自动编号及交叉引用:简单、详细、可用
  9. 陌陌二季报背后:荷尔蒙经济被抢?
  10. Java初学者作业——输入一个五位数字,计算各位数字之和并输出,运行结果为五个数字之和(实践2)