一个twitch 直播地址搜索爬虫基于java selenium 和 spring boot
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相关推荐
- spring实战六之使用基于java配置的Spring
之前接触的都是基于XML配置的Spring,Spring3.0开始可以几乎不使用XML而使用纯粹的java代码来配置Spring应用.使用基于java配置的Spring的步骤如下: 1. 创建基于ja ...
- sb版 java后端(spring boot)应用Conflux Java SDK尝试交互Conflux实录
sb版 java后端(spring boot)应用Conflux-java-尝试链接Conflux实录 2021/5/3 更新: 请看最新博客!!!内容更详实且包含本文所有内容(不删此篇纯粹是因为阅读 ...
- 第64节:Java中的Spring Boot 2.0简介笔记
Java中的Spring Boot 2.0简介笔记 spring boot简介 依赖java8的运行环境 多模块项目 打包和运行 spring boot是由spring framework构建的,sp ...
- 直播api接口java_基于JAVA的电视台直播节目时间表api调用代码实例
代码描述:基于JAVA的电视台直播节目时间表api调用代码实例 接口地址:http://www.juhe.cn/docs/api/id/129 1.[代码][Java]代码 import java.i ...
- 基于Java jsp+mysql+Spring的汽车出租平台租赁网站平台设计和实现
主要功能说明: 管理员角色包含以下功能:管理员登录, 用户管理,管理员管理, 订单管理和审核,利润统计, 交易流水管理车辆管理, 汽车品牌管理等功能. 用户角色包含以下功能: 用户登录页 ...
- 在Java eclipse 中Spring Boot工具安装步骤
如何使用Spring Boot一步一步搭建一个Web的基础工程-- 安装eclipse 1 eclipse官网下载地址:https://www.eclipse.org/downloads/ 2 安装e ...
- 一款 Java 开源的 Spring Boot 即时通讯 IM 聊天系统
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 开篇 电商平台最不能缺的就是即时通讯,例如通知类下发,客服 ...
- Java微框架Spring Boot 运行原理深入解读
本文节选自< JavaEE开发的颠覆者--Spring Boot实战 >一书.本书从Spring 基础.Spring MVC 基础讲起,从而无难度地引入Spring Boot 的学习.涵盖 ...
- 【Java进阶】Spring Boot集成ES
目录 spring boot集成ES ElasticSearchConfig 测试文档的基本操作 Elasticsearch Clients 文档 spring boot集成ES Java REST ...
最新文章
- android相机截取矩形框,Android自定义照相机实现只拍摄矩形区域(重传)
- python连接memcached
- wxWidgets:异形窗示例
- iOS混淆 -- 生成define 替换名
- 一致性哈希算法学习及JAVA代码实现分析
- Smobiler 4.4 更新预告 Part 1(Smobiler能让你在Visual Studio上开发APP)
- 线性表:链栈算法实现
- Python并发编程理论篇
- linux添加硬盘不重启(vmware下或者虚拟机下面)
- android studio中如何替换gradle以防下载卡住
- Shiny 版混合线性模型的建模遍历
- 笨办法学R编程(4)
- 分享几个简单易做的Java小程序,一起动手来试试吧
- Idea中的搜索快捷键
- 软件工程之软件质量管理(SQA)
- JavaScript 计算时间差
- App Store 上架审核指北【翻译】
- python可视化分析网易云音乐评论_网易云音乐评论 可视化分析
- ckeditor引入
- 解决办法之Duplicate entry ‘1‘ for key ‘PRIMARY‘
热门文章
- java剑士7723,linux 环境下tomcat启动失败问题
- 一切为了用户体验:揭秘京东首页改版背后的故事
- 最新非常实用的彻底隐藏文件、网络、无线、恢复文件、网络电视等绿色软件下载
- 强化学习(一)Deep Q-Network
- 鸿蒙os和麒麟os的区别,华为终端最受关注十大功能技术:鸿蒙OS第二、第一国产最强...
- java自动换行方法_自动换行的实现方法zz
- 那些回不去的年少时光(桐华)
- Word中公式自动编号及交叉引用:简单、详细、可用
- 陌陌二季报背后:荷尔蒙经济被抢?
- Java初学者作业——输入一个五位数字,计算各位数字之和并输出,运行结果为五个数字之和(实践2)