猿问

XPATH - getAttribute() 和 writer.append() 到 CSV 文件

我正在尝试获取“title”属性值并将其从以下元素保存在 csv 文件中:


<img src="images/i.png" title="Uwagi: łacina, nieczytelne

Data urodzenia: 25.02.1808 r.">

整个 html在这里。


我在下面使用 xpath 获得了这个属性值(它有效):


SelenideElement uwagi = $(By.xpath("//div[@id='table_b_wrapper']//table[@id='table_b']//tbody//tr[1]//img[contains(@title,'Uwagi')]"));  

//tr[1] is just a one example from this table. xpath is ok

然后我尝试将其放入我的 csv 文件中:


writer.append(uwagi+";");  //using ; as separator

问题是这个值“注释:拉丁语,难以辨认出生日期:1808 年 2 月 25 日”


它分为两部分,它们被保存为单独的单元格,就像这里


我需要一个单元格中的所有这些值(即 J1731 和 A1732 值应为 1 个单元格)。当我 System.out.println(uwagi.getAttribute("title")); 只在控制台中显示属性值的第二部分(数据 urodzenia:25.02.1808 r.)时,奇怪的是。如何将此标题属性值保存为 csv 中的一个单元格?



吃鸡游戏
浏览 124回答 2
2回答

慕的地10843

从标题中删除换行符,下面的代码\n根据您共享的 html 的需要将(换行符)替换为一个空格。同样在 Selenide 中,您可以将$x其用于 xpath 选择器:SelenideElement uwagi = $x("//table[@id='table_b']//tr[@role='row'][1]//img[contains(@title,'Uwagi')]");//using css selectoruwagi = $("#table_b tr[role='row'] img[title^='Uwagi']");//or even shorteruwagi = $("#table_b img[title^='Uwagi']");String uwagiTitle = uwagi.text().replace("\n", " ");writer.append(uwagiTitle+";");

慕慕森

我找到了解决方案。我改变了:FileWriter writer = new FileWriter(pathString, Charset.forName("Cp1250"));至CsvWriter writer = new CsvWriter(pathString, ';', Charset.forName("Cp1250"));还使用:&nbsp; &nbsp; <dependency>&nbsp; &nbsp; &nbsp; &nbsp; <groupId>net.sourceforge.javacsv</groupId>&nbsp; &nbsp; &nbsp; &nbsp; <artifactId>javacsv</artifactId>&nbsp; &nbsp; &nbsp; &nbsp; <version>2.0</version>&nbsp; &nbsp; </dependency>根据来自的信息:链接然后我将writer.apend更改为writer.write。其他也一样:...&nbsp; &nbsp; SelenideElement xxx = $x("//img[contains(@title,'Uwagi')]");&nbsp;&nbsp; &nbsp; String str = xxx.getAttribute("title");&nbsp; &nbsp; writer.write(str);...结果:图片
随时随地看视频慕课网APP

相关分类

Java
我要回答