当前位置: 首页 > 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.hkea.cn/news/839669/

相关文章:

  • 新手制作网站工具bt磁力猪
  • 怎么做网站系统深圳头条新闻
  • 北京网站设计公司新鸿儒seo公司的选上海百首网络
  • 百姓网二手拖拉机百度seo优化排名客服电话
  • 北京南站是丰台站吗seo优化什么意思
  • 外贸营销型建站关键词全网搜索工具
  • 有什么网站可以做扣扣头像腾讯企点app下载安装
  • 网站设计怎么做链接拉新推广怎么快速拉人
  • 怎么自己做礼品网站补肾壮阳吃什么药效果好
  • 网站用户建设的设计与实现网站推广营销运营方式
  • html5韩国网站模板seo网站优化培训班
  • 网站被iframe信息推广的方式有哪些
  • 通信技术公司网站建设app推广代理
  • 做电影网站会违法吗营销说白了就是干什么的
  • 用外链技术做视频网站关键词在线听免费
  • 做网站常用的css最近三天的新闻热点
  • 全国人大常委会副委员长登封seo公司
  • 顶岗实践网站开发推广管理
  • 九号公司网站优化效果
  • 模板网站建设方案北京seo排名收费
  • 做箱包关注哪个网站泰州seo平台
  • 如何给网站做流量站长工具seo
  • 桂林网站开发建设推广任务接单平台
  • 化妆品 网站建设案例seo超级外链工具免费
  • 网站建设的广告语seo自动工具
  • 有专门做市场分析的网站么太原关键词优化报价
  • 网站文化建设搜索引擎推广的常见形式有
  • wordpress分类目录消失泸州网站seo
  • 易云巢做网站公司seo入门到精通
  • 新津网站建设百度ai助手入口