当前位置: 首页 > news >正文

java调用python爬虫_Java调用Python爬虫

用java调用python的爬虫程序,是一件很有意思的事情, 但解决方法大多不靠谱,作者花了两天的时间,动手实践,最终完全解决了问题

e482513c727107d66bd625defce5568f.png

java-python

Java调用Python爬虫需要解决的问题:

参数传递问题由python脚本通过, sys.argv[1]读取参数

依赖包的问题用virtualenv构建虚拟环境,在虚拟环境安装所有相关依赖包, 用虚拟环境内的python解释器去执行python脚本, 可以完美解决依赖包问题

java与python数据传递python脚本负责将爬取的内容保存为文件, 文件保存完成后, 由java程序读取文档内容import java.io.IOException;import java.io.File;public class BPython {    public static void main(String[] args) {        // 获取当前路径

File directory = new File("");//设定为当前文件夹

String dirPath = directory.getAbsolutePath();//获取绝对路径

Process proc;        try {            // python解释器路径

String pyPath = "/Users/lijianzhao/.virtualenvs/py3/bin/python3";            // python脚本文件路径

String pyFilePath = dirPath+ "/bdindex.py";

System.out.println(pyFilePath);            // 传给python的参数

String argv1 = "一人之下";

proc = Runtime.getRuntime().exec(pyPath + " "+ pyFilePath + " " +argv1);

proc.waitFor();

} catch (IOException e) {

e.printStackTrace();

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}# coding=utf-8import requestsfrom lxml import etreeimport osimport sysdef getData(wd):

# 设置用户代理头

headers = {        # 设置用户代理头(为狼披上羊皮)

"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36",

}    # 构造目标网址

target_url = "https://www.baidu.com/s?wd="+str(wd)    # 获取响应

data = requests.get(target_url, headers = headers)    # xpath格式化

data_etree = etree.HTML(data.content)    # 提取数据列表

content_list = data_etree.xpath('//div[@id="content_left"]/div[contains(@class, "result c-container")]')    # 定义返回的字符串

result = ""

# 获取标题, 内容, 链接

for content in content_list:

result_title = "  "

bd_title = content.xpath('.//h3/a')        for bd_t in bd_title:

result_title += bd_t.xpath('string(.)')

result_content = ""

bd_content = content.xpath('.//div[@class="c-abstract"]')        for bd_c in bd_content:

result_content += bd_c.xpath('string(.)')        try:

result_link = ""+str(list(content.xpath('.//div[@class="f13"]/a[@class="c-showurl"]/@href'))[0])        except:

result_link = ": 空"

result_list = [result_title, "\n" , result_content , "\n", result_link]        for result_l in result_list:

result += str(result_l)    return result# 保存为文件def saveDataToFile(file_name, data):

# 建立文件夹

if os.path.exists("./data/"):        pass

else:

os.makedirs("./data/")    with open("./data/"+file_name+".txt", "wb+") as f:

f.write(data.encode())def main():

wd = ""

print(wd)    try:

wd = sys.argv[1]    except:        pass

if (len(wd) == 0):

wd = "Hello"

str_data = getData(wd)

saveDataToFile(wd, str_data)

print("end")if __name__ == '__main__':

main()小结

python可能是最好用的爬虫语言, 以后遇到采集数据的需求时, 可以用java直接调用python的爬虫, 人生苦短, 我用python

打开App,阅读手记

相关文章:

  • 移动端如何用swiper实现导航栏效果
  • mysql undo_mysql 的undo 表空间
  • linux 后台开发类常见问题及知识点
  • mysql无法存 x_mySQL如果X Y不保存信息
  • mysql查询语句能用吗_基于mysql查询语句的使用详解
  • C语言程序设计第四次作业——选择结构(2)
  • 数组不能以什么形式参与运算_EXCEL知识:数组运算是什么?
  • python内置函数it_Python标准库:内置函数iter(object[, sentinel])
  • CentOS yum 源的配置与使用
  • regain搜索引擎_精致的桌面全文搜索引擎regain安装配置简介
  • centos系统配置mysql服务起不来_CentOS7安装mysql后无法启动服务,提示Unit not found...
  • github
  • mysql 5.5 创建用户_MySQL_在Centos 5.5 上编译安装mysql 5.5.9,创建mysql用户 [root@xuhost opt]# use - phpStudy...
  • mysql多实例访问代理_MySQL 8.0.20 MGR+ProxySQL 线上实战项目
  • Python 3.6 连接mssql数据库(pymssql 方式)
  • 2017 前端面试准备 - 收藏集 - 掘金
  • java小心机(3)| 浅析finalize()
  • java正则表式的使用
  • oschina
  • select2 取值 遍历 设置默认值
  • Solarized Scheme
  • SpiderData 2019年2月23日 DApp数据排行榜
  • Terraform入门 - 3. 变更基础设施
  • 成为一名优秀的Developer的书单
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 飞驰在Mesos的涡轮引擎上
  • 近期前端发展计划
  • 每天一个设计模式之命令模式
  • 前端之React实战:创建跨平台的项目架构
  • 学习Vue.js的五个小例子
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • 翻译 | The Principles of OOD 面向对象设计原则
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • ​卜东波研究员:高观点下的少儿计算思维
  • #13 yum、编译安装与sed命令的使用
  • #mysql 8.0 踩坑日记
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (2015)JS ES6 必知的十个 特性
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • (转)http协议
  • (转载)CentOS查看系统信息|CentOS查看命令
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .NET 材料检测系统崩溃分析
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • .NET微信公众号开发-2.0创建自定义菜单
  • .sh
  • @Bean有哪些属性
  • @Not - Empty-Null-Blank
  • @property @synthesize @dynamic 及相关属性作用探究
  • @RequestMapping-占位符映射