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

青岛网站建设培训品牌运营中心

青岛网站建设培训,品牌运营中心,做dnf辅助网站,网站建设金手指稳定这篇博客将详细说明如何从 Java 应用程序调用一个 Python 脚本,并在此过程中传递参数给一个 Scrapy 爬虫。最终目标是让 Java 控制爬虫的行为,如爬取数量和特定的运行参数。 一、Scrapy 爬虫的修改 首先,我们需要确保 Scrapy 爬虫能接收从命…

这篇博客将详细说明如何从 Java 应用程序调用一个 Python 脚本,并在此过程中传递参数给一个 Scrapy 爬虫。最终目标是让 Java 控制爬虫的行为,如爬取数量和特定的运行参数。

一、Scrapy 爬虫的修改

首先,我们需要确保 Scrapy 爬虫能接收从命令行传递的参数。这涉及到修改 Scrapy 的启动文件和爬虫文件。

  1. 创建 Python 启动脚本 run.py

    这个脚本负责解析从 Java 传来的命令行参数,并将其传递给 Scrapy 爬虫。

    # run.py
    import sys
    from scrapy import cmdlineif __name__ == '__main__':# 接受从外部传入的参数# spider_name = sys.argv[1]  # 爬虫名称# token = sys.argv[2]        # 接受令牌# num = sys.argv[3]          # 接受数字参数# map_json = sys.argv[4]     # 接受JSON格式的字典# 测试数据spider_name = 'pic'token = "123"num = 100map_json = '{"a": 1, "b": 2}'# 构建 Scrapy 命令command = ["scrapy", "crawl", spider_name,"-a", f"token={token}","-a", f"num={num}","-a", f"map={map_json}"]cmdline.execute(command)
    
  2. 修改 Scrapy 爬虫以使用这些参数

    # pic_spider.py
    import scrapy
    import jsonclass PicSpider(scrapy.Spider):"""彼岸图网站图片爬虫https://pic.netbian.com/"""name = 'pic'# allowed_domains = ['netbian.com']start_urls = ['https://pic.netbian.com//']def __init__(self, token=None, num=None, java_map=None, *args, **kwargs):super(PicSpider, self).__init__(*args, **kwargs)self.token = tokenself.num = int(num) if num else 100  # 接收数字并提供默认值self.map = json.loads(java_map) if java_map else {}  # 正确的条件检查def parse(self, resp, **kwargs):print(resp.text)
    
二、Java 端的实现

在 Java 端,需要构建一个命令行字符串并使用 Runtime.exec() 来调用 Python 脚本。

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;public class RunScrapyFromJava {public static void main(String[] args) {try {String pythonScriptPath = "path/to/run.py";String spiderName = "pic";String token = "some_token";int num = 100;Map<String, Object> map = new HashMap<>();map.put("key1", "value1");map.put("key2", "value2");String jsonMap = new Gson().toJson(map);if (jsonMap.isEmpty()) {jsonMap = "{}";  // 确保总是传递一个 JSON 字符串}// 构建命令String command = String.format("python %s %s %s %d '%s'",pythonScriptPath, spiderName, token, num, jsonMap);Process p = Runtime.getRuntime().exec(command);p.waitFor();BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));String line;while ((line = reader.readLine()) != null) {System.out.println(line);}} catch (Exception e) {e.printStackTrace();}}
}
总结

这个过程实现了从 Java 端通过 Python 启动脚本向 Scrapy 爬虫动态传递参数,使得爬虫行为可以根据外部输入进行调整。此方法适用于需要从 Java 控制 Python 爬虫的场景,如企业应用中的数据采集任务。

http://www.hkea.cn/news/348552/

相关文章:

  • 德清网站建设中心优化大师官方免费下载
  • 生日网页制作免费网站制作代做网页设计平台
  • 学校类网站特点游戏优化大师官网
  • 手机电视网站大全河南网站建设定制
  • zblog做的商城网站上海有实力的seo推广咨询
  • 免费网站模板psd网络营销的整体概念
  • 网站模板下载破解版环球军事新闻最新消息
  • 徐汇苏州网站建设东莞免费建站公司
  • 厦门网站建设哪家强深圳网站维护
  • 政府网站新媒体平台建设关键词权重查询
  • 重庆网站建设制作公司百度客服人工在线咨询电话
  • 微信公众号平台入口官网奶盘seo伪原创工具
  • 泉州网站建设公司推荐宁德市地图
  • 大厂县住房和城乡建设局网站刷百度指数
  • 低代码开发平台优缺点昆山seo网站优化软件
  • 网站开发年终总结网络营销战略的内容
  • 建立门户网站的意义营销推广网
  • 网站建设网站软件有哪些百度推广开户费用标准
  • 找家装修公司家装吉林seo外包
  • 保定医疗网站建设公司会计培训班初级费用
  • 最好的销售管理系统seo发帖网站
  • 德州乐陵德州seo公司seo批量建站
  • 贵州省建设监理协会官方网站seo代运营
  • 北京哪家做网站优化账号权重查询
  • 大唐网站建设培训管理平台
  • 男人和女人在床上做那个网站网络营销策划推广公司
  • 深圳市招投标交易中心天津谷歌优化
  • 厦门园网站忱建设百度推广怎么联系
  • 网站优化页面动态网站建设
  • 做网站域名公司每日重大军事新闻