【无敌浪子】python爬取足球赛事数据

本文介绍了使用Java进行网页爬虫的实践,通过ChromeDriver实现无头浏览器,抓取指定网页数据。之后利用Jsoup解析HTML,提取所需信息,并将数据分组,最终写入Excel文件。代码详细展示了数据爬取和处理的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python爬虫

前言

某个夜深人静的夜晚,夜微凉风微扬,月光照进我的书房~
当我打开文件夹以回顾往事之余,惊现许多看似杂乱的无聊代码。我拍腿正坐,一个想法油然而生:“生活已然很无聊,不如再无聊些叭”。
于是,我决定开一个专题,便称之为无敌浪子的无聊小发明。 妙…啊~~~

一、代码分析

前几天实验室中貌美如花的老师问我可以做爬虫嘛,凭借大学学过爬虫一点皮毛要说会哦, 于是凭借本人精通java开发,利用java语言便可轻松地对网页数据进行爬取并处理。

一、首先定义相关网页配置文件

// 设置指定键对值的系统属性
		System.setProperty("webdriver.chrome.driver", "E:\\chromedriver.exe");

		// 创建无Chrome无头参数
		ChromeOptions chromeOptions = new ChromeOptions();
		chromeOptions.addArguments("-headless");

		WebDriver driver = new ChromeDriver();
		// driver.get("http://www.dianping.com/ruzhou/ch10");
		// 窗口最大化
		// driver.manage().window().maximize();
		driver.get("网址url");
		// 初始化 不加载图片

		// 设置超时5秒 默认也有的可能长一点。
		WebDriverWait wait = new WebDriverWait(driver, 5);
		wait.until(new ExpectedCondition<Boolean>() {
			public Boolean apply(WebDriver d) {
				boolean loadcomplete = d.findElement(By.tagName("body")).isDisplayed();
				return loadcomplete;
			}
		});

二、开启爬虫之路

Document doc = Jsoup.parse(driver.getPageSource());
//		Elements container = doc.select("div.td_div");
		Elements container = doc.select("div.bet-main bet-main-dg");		

		// System.out.println(container.html());
		Elements table = container.select("table#MatchTable.socai");
		
		// System.out.println(table.html());
		Elements tr_ri_dates = table.get(0).select("tr.ttis");

		// 拿所有的兄弟节点
		List<Element> next_all = tr_ri_dates.get(0).siblingElements();
		// System.out.println(next_all.size());
		int i = 1;
		// 遍历所有节点
		String title_id = "";
		List<String> id_list = new ArrayList<String>();// 拿到所有的id
		for (Element element : next_all) {
			// 没有id的是 class="niDate"
			// id row_3390001 row 是标题
			// id tr_3390001 tr的是详情内容
			String id_str = element.attr("id");
			// System.out.println(i+":"+id_str);
			if (id_str.indexOf("row") != -1) {
				// 这是标题 记录标题id
				title_id = id_str.substring(4, id_str.length());
				// System.out.println(title_id);
				id_list.add(title_id.trim());
			}
			i++;
		}

		// 把数据进行分组
		List<JSONObject> dataList = new ArrayList<JSONObject>();
		for (String id : id_list) {
			dataList.add(jiexi(id, next_all));
		}
		createExcel(dataList);
		driver.close();
		driver.quit();
	}

三、对爬取的数据进行插入execl操作

CellStyle style = wb.createCellStyle();
			Font font = wb.createFont();
			font.setColor(Font.COLOR_RED);
			style.setFont(font);

			Row row1 = sheet.createRow(((i - 1) * 32) + 1);
			Cell cell1 = row1.createCell(0);
			cell1.setCellStyle(style);
			cell1.setCellValue(obj.getString("bianhao"));

			Row row2 = sheet.createRow(((i - 1) * 32) + 2);
			Cell cell2 = row2.createCell(0);
			cell2.setCellStyle(style);
			cell2.setCellValue(obj.getString("bianhao") + "的胜负平");

			Row row3 = sheet.createRow(((i - 1) * 32) + 3);
			row3.createCell(0).setCellValue("第1场" + obj.getString("zhou") + obj.getString("bianhao") + " 胜平负");
			Row row4 = sheet.createRow(((i - 1) * 32) + 4);
			row4.createCell(0).setCellValue(obj.getString("vs"));
			Row row5 = sheet.createRow(((i - 1) * 32) + 5);
			row5.createCell(0).setCellValue(obj.getString("s") + "元");

运行效果如下:

在这里插入图片描述
啦啦啦,无敌浪子的完美之作,是不是很酷哈哈哈!!!

写在最后

交给貌美如花的大师姐哈皮,是不是很调皮,更亲近喽哈哈哈。

最后,感谢各位大大的耐心阅读,咋们下次再会~

创作不易,大侠请留步… 动起可爱的双手,来个赞再走呗 (๑◕ܫ←๑)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浪子私房菜

给小强一点爱心呗

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值