我正在尝试从网站上抓取药品 list 。 我正在使用 JSOUP 来解析 Html。
这是我的代码:
URL url = new URL("http://www.medindia.net/drug-price/index.asp?alpha=a");
Document doc1 = Jsoup.parse(url, 0);
Elements rows = doc1.getElementsByAttributeValue("style", "padding-left:5px;border-right:1px solid #A5A5A5;");
for(Element row : rows){
String htm = row.text();
if(!(htm.equals("View Price")||htm.contains("Show Details"))) {
System.out.println(htm);
System.out.println();
}
}
这是我得到的输出:
附注这不是完整的输出,但由于我无法截取完整输出的屏幕截图,所以我只是显示了它。
我需要知道两件事:
问题 1. 为什么每个药物名称前面都会有一个额外的空格,以及为什么在某些药物名称后面会出现额外的换行符?
问题 2.如何解决此问题?
最佳答案
一些事情:
- 这不是完整的输出,因为有不止一页。我放置了一个
for
循环来为您解决这个问题。 - 您可能应该使用
htm.trim()
修剪输出 - 您应该确保在出现 newLine 时不打印 (
!htm.isEmpty()
) - 该网站有一个奇怪的字符,其中 ASCII 值为 160。我添加了一个小修复来解决该问题。 (使用
.replace
)
这是固定代码:
for(char page='a'; page <= 'z'; page++) {
String urlString = String.format("http://www.medindia.net/drug-price/index.asp?alpha=%c", page);
URL url = new URL(urlString);
Document doc1 = Jsoup.parse(url, 0);
Elements rows = doc1.getElementsByAttributeValue("style", "padding-left:5px;border-right:1px solid #A5A5A5;");
for(Element row : rows){
String htm = row.text().replace((char) 160, ' ').trim();
if(!(htm.equals("View Price")||htm.contains("Show Details"))&& !htm.isEmpty())
{
System.out.println(htm.trim());
System.out.println();
}
}
}
关于java - 删除我从网站上抓取的文本中的空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13764934/