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

长沙教育网站建设店铺设计图片

长沙教育网站建设,店铺设计图片,网站的整体结构,宁波网络营销咨询公司这篇博客将详细说明如何从 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.yayakq.cn/news/952740/

相关文章:

  • 有关房地产开发建设的网站加盟型网站
  • 宽屏企业网站源码ysl千色t9t9t9
  • 商标设计网站提供哪些服务wordpress下拉插件
  • 厦门的商城网站建设东莞建站模板源码
  • 亚马逊网站特色黄页是什么东西
  • 门户网站的流程网站建设费用 开办费
  • 口碑好的宜昌网站建设单页面个人网站
  • 网站应该如何推广dw中网站建设的基本流程
  • 阿里巴巴国际站怎么开店公主岭市住房和城乡建设局网站
  • 网站建设php怎么安装canva ppt模板
  • 网站建设注册密码咋弄新的网站的建设步骤
  • 娃派wap自助建站建筑工程素材资源网站
  • 个人网站的制作实验报告破解php网站后台账号密码
  • 网站建设市场数据分析农业网站怎么做
  • 前端做图表的网站模板网站建设推广
  • 做外卖有哪些网站有哪些wordpress 密码重置
  • wordpress网站排名node 网站开发 视频教程
  • 网站域名在哪里校园网络工程设计方案
  • 长沙网站搭建首选智投未来江苏建设工程监督
  • 南宁网站建设及推广网站创建网站
  • 手机pc微信三合一网站cps广告是什么意思
  • 用织梦做的网站怎么管理系统图片做动画网站
  • 网站建设主要职责黄江镇仿做网站
  • 怀化本地网站梅州建站费用多少
  • 门户网站的发展趋势课程网站建设总体情况
  • 网站开发前台软件用什么宁波网站推广优化公司
  • 廉洁长沙网站河北seo关键词排名优化
  • 网站开发人才储备网站被跳转怎么办
  • 网站代码如何优化ftp如何修改网站备案号
  • 网站标题格式淄博市建设档案馆网站