Jython使用jsoup爬取网页标题与链接信息

326 篇文章 2 订阅
85 篇文章 2 订阅

目的:获取网站链接,实现无人工干预的资料获取。


1 java实现的jsoup HTML解析库

下载:http://jsoup.org/


2 工作平台Ubuntu

3 使用Jython调用jsoup实现提取网页链接信息

代码:

#coding=utf-8

#doc from http://jsoup.org/apidocs/

from org.python.core import codecs
codecs.setDefaultEncoding('utf-8')

import sys
#print(sys.defaultencoding)

sys.path.append("/home/xxx/software/htmlparse/jsoup-1.7.3.jar");

from org.jsoup import *

doc = Jsoup.connect("http://www.baidu.com").get();

elms = doc.getAllElements();

head = elms.select("head")
page_title = head.text()
print(page_title)

hrfs = elms.select("[href^=http]")
for h in hrfs:
	title = h.text()
	url = h.attr('href')
	print title + ", " + url

效果如下:

百度一下,你就知道
体验iPhone上最好用的中文输入法!, http://srf.baidu.com/ios8/pc.html
登录, https://passport.baidu.com/v2/?login&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2F
新闻, http://news.baidu.com
hao123, http://www.hao123.com
地图, http://map.baidu.com
视频, http://v.baidu.com
贴吧, http://tieba.baidu.com
登录, https://passport.baidu.com/v2/?login&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2F
设置, http://www.baidu.com/gaoji/preferences.html
更多产品, http://www.baidu.com/more/
新闻, http://news.baidu.com/ns?cl=2&rn=20&tn=news&word=
贴吧, http://tieba.baidu.com/f?kw=&fr=wwwt
知道, http://zhidao.baidu.com/q?ct=17&pn=0&tn=ikaslist&rn=10&word=&fr=wwwt
音乐, http://music.baidu.com/search?fr=ps&key=
图片, http://image.baidu.com/i?tn=baiduimage&ps=1&ct=201326592&lm=-1&cl=2&nc=1&word=
视频, http://v.baidu.com/v?ct=301989888&rn=20&pn=0&db=0&s=25&word=
地图, http://map.baidu.com/m?word=&fr=ps01000
文库, http://wenku.baidu.com/search?word=&lm=0&od=0
把百度设为主页, http://www.baidu.com/cache/sethelp/index.html
关于百度, http://home.baidu.com
About Baidu, http://ir.baidu.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Jython是一种用于Java平台的Python实现,而PyO3是一个Python扩展库,它使得可以使用Rust编写Python扩展,因此不能直接使用PyO3开发Jython扩展。不过,Jython本身提供了一些API来编写Java扩展,可以使用这些API来开发Jython扩展。 在Jython中,可以使用Java的反射机制来访问Java类和方法。以下是一个使用Jython和Java互操作的示例: ```python import java import java.lang.reflect.Method # 获取Java String类 string_class = java.lang.String # 创建Java String实例 java_string = string_class("Hello, World!") # 获取Java String的length方法 length_method = string_class.getMethod("length") # 调用length方法 result = length_method.invoke(java_string) # 打印结果 print(result) ``` 在上面的示例中,通过反射机制获取了Java String类和length方法,然后使用Jython调用了Java方法并获取了结果。 在开发Jython扩展时,可以使用类似的方式来调用Java类和方法。需要注意的是,Jython扩展需要编译成Java类,然后可以在Java代码中使用。可以使用Jython提供的命令行工具来编译Jython扩展: ``` jythonc mymodule.py ``` 这将会生成一个Java类文件mymodule.class,然后可以在Java代码中使用它。例如,以下代码演示了如何在Java中调用Jython扩展: ```java import org.python.util.PythonInterpreter; import org.python.core.PyObject; public class MyJavaClass { public static void main(String[] args) { // 创建Python解释器 PythonInterpreter interp = new PythonInterpreter(); // 导入Jython模块 interp.exec("import mymodule"); // 调用Jython函数 PyObject result = interp.eval("mymodule.myfunc('Hello, World!')"); // 打印结果 System.out.println(result); } } ``` 在上面的示例中,使用PythonInterpreter类创建了一个Python解释器,并导入了Jython模块。然后调用了Jython函数并获取了结果。需要注意的是,Jython扩展需要注意和Java互操作的问题,例如类型转换和异常处理等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值