目录
(3)Failed to install '': java.nio.charset.UnsupportedCharsetException: cp0 处理
用网页在看电影的时候,总是有那么一堆的广告,如果用F12去关掉广告,总要浪费点时间,而且不方便。正好学了那么多技术,计划做一个网页跳转的web应用,能够删掉不必要的内容。
一、思路
看一看我想要的操作:
输入一个链接——>spring获取url内容——>交给python处理网页、剔除不必要的部分,然后返回网页——>通过前端可以看电影了!
因此我需要几个技术来处理:
spring boot + spring mvc 处理 url + java调用python接口 + python 2(2要熟悉一点)截取指定内容 ——> 返回给到前台
二、url接收处理
1,简易版处理
(1)获取无 '/'的url
博主通过 http://localhost:8089/tailor 这个url处理后续的网页,通过一个路径参数,取出tailor后面的变量并打印出来
@Controller
// 裁剪网页控制器
@RequestMapping("/tailor")
public class UrlHandlerController {
// 采用路径参数方式获取url值
@RequestMapping("/{url}")
@ResponseBody
public String tailor(@PathVariable String url) {
return "url: " + url;
}
@RequestMapping("/*")
@ResponseBody
public String index(Model model) {
return "请输入需裁剪的网页";
}
}
(2)处理有'/'的url
这里有个难点,当在url栏中输入:http://localhost:8089/tailor/www.baidu.com/f 则会报错:
研究它的url输入,可以看出: 这个url只能获取到最后一个 . 前的地址,而且有/的话不能识别出这个url
因此,输入的url需要有一个规范:用$$代替/,以. 结束url
比如www.baidu.com/syny 需写成www.baidu.com$$syny
url值:http://localhost:8089/tailor/www.baidu.com$$syny.
接收到数据:
三、spring boot中调用python
处理网页,用python比较方便。
1,java中调用python的相关知识
(1)加入dependency
要想在spring boot里运行python程序,在本项目中采用的是自带一个python解释器,Jython(原JPython),一个由Java语言编写的Python解释器。
<dependency>
<groupId>org.python</groupId>
<artifactId>jython-standalone</artifactId>
<version>2.7.0</version>
</dependency>
(2)运行基本的python程序
@Test
public void demo1() {
PythonInterpreter interpreter = new PythonInterpreter();
interpreter.exec("print('hello syny')");
interpreter.close();
}
(3)Failed to install '': java.nio.charset.UnsupportedCharsetException: cp0 处理
在run的arguments中加入:-Dpython.console.encoding=UTF-8,再运行即可(不过运行真的很慢~~)
(4)调用python文件
@Test
public void execFileTest() {
PythonInterpreter interpreter = new PythonInterpreter();
interpreter.execfile("D:/test/python/hello.py");
interpreter.close();
}
2,编写获取网页指定内容的python程序!
思路是通过urlib2处理url请求,然后用beautiful处理html