1. 程式人生 > >Jsoup提取指定table中所有td的內容

Jsoup提取指定table中所有td的內容

由於資料抓取的需要,將網頁下載完後所有的都是html原始碼,需要抓取某一資訊時,需要對html做特定的分析,然後按照class或者id進行抓取。如果不瞭解抓取頁面的html標籤時,所得到的資訊是非常的難看,也很難從其中發現有用的資訊。也是現在我開始做頁面挖掘最大的難點。

以下程式碼是結合前面對html頁面空格處理以及特定抓取和儲存的程式碼:

下載頁面程式碼:

</pre><pre class="java" name="code">package com.dazhihui;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class MyJsoup {
	public static boolean downloadPage(String url, File file){
		try {
			Document doc = Jsoup.connect(url).data("jquery","java").userAgent("Mozilla").cookie("auth", "tiken").timeout(5000).get();
			String pageHtml = doc.toString();
			OutputStream out = new FileOutputStream(file);
			out.write(pageHtml.toString().getBytes());
			out.close();	
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return false;
		}
		return true;
	}
}

處理空格程式碼:

package com.dazhihui;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class ReplaceAllFileString {
	//引數說明:oldFile為所需要替換的檔案,即為原檔案;   newFile為替換後新的檔案 ;oldString為所需要替換的字串;newString為替換字串
	public static boolean replaceAllFileString(File oldFile, File newFile, String oldString, String newString){
		try {
		BufferedReader reader = new BufferedReader(new FileReader(oldFile));
		BufferedWriter writer = new BufferedWriter(new FileWriter(newFile));
		String teamString = null;
		while((teamString = reader.readLine()) != null){
			String str = teamString.replaceAll(oldString, newString);
			writer.write(str);
		}
		reader.close();
		writer.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return false;
		}
		return true;
	}
}


提取大智慧公司概況程式碼:

package com.dazhihui;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class DazhihuiResolveCompanyProfile {
	public static ArrayList<String> resolvePageText(File file){
		ArrayList<String> list=null;
		try {
			Document doc = Jsoup.parse(file, "GBK");
			Elements elements = doc.getElementsByClass("table_style_e");
			list = new ArrayList<String>();
			//select("table#table_style_e");
			for(Element element:elements){
				if(element.text()!=null&& !"".equals(element.text())){
					Elements es = element.select("tr");
					for(Element tdelement:es){
						Elements tdes = tdelement.select("td");
						for(int i = 0; i < tdes.size(); i++){
							list.add(tdes.get(i).text());
							//System.out.println(tdes.get(i).text());
						}
					}
				}
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}	
		return list;
	}
}


主程式碼:

package com.dazhihui;

import java.io.File;
import java.util.ArrayList;


public class Dazhihui {

	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String url = "http://cj.gw.com.cn/news/stock/601288.shtml";
		File file = new File("C:/myjsoup/dazhihui/dazhihui.txt");
		File newFile = new File("C:/myjsoup/dazhihui/newdazhihui.txt");
		boolean mark =  MyJsoup.downloadPage(url, file);
		System.out.println(mark);
		boolean mark2 = ReplaceAllFileString.replaceAllFileString(file, newFile, " ", "");
		System.out.println(mark2);
		ArrayList<String> list =DazhihuiResolveCompanyProfile.resolvePageText(newFile);
		for(int i = 0; i < list.size(); i++){
			System.out.println(list.get(i));
		}
	}

}



相關推薦

Jsoup提取指定table所有td內容

由於資料抓取的需要,將網頁下載完後所有的都是html原始碼,需要抓取某一資訊時,需要對html做特定的分析,然後按照class或者id進行抓取。如果不瞭解抓取頁面的html標籤時,所得到的資訊是非常的難看,也很難從其中發現有用的資訊。也是現在我開始做頁面挖掘最大的難點。 以

HTML怎麼讓tabletd內容過長顯示為固定長度,多餘部分用省略號代替

HTML如何讓table中的td內容過長顯示為固定長度,多餘部分用省略號代替 這個問題呢,是由於我們公司測試的部門測出來的,雖然說測試的內容本身就是個BUG,不過這個也讓我學到了一個比較好的歸類於佈局的一個小技巧,就是將td標籤中過長的內容只顯示為這個td的width的長度,之後的便以省略號

javascript做的一個根據table某個td的值為日期時的倒計時

pan doc 現在 參數 tin continue 現在時間 諸葛亮 style JavaScript代碼: <script> window.onload = window.onload = function () { getTdValue(

Jquery 獲取指定 table所有 type 'text' 的 input

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Java——打印出指定目錄所有的檔案 ,包括子資料夾所有檔案

import java.io.File; // 打印出指定目錄中所有的檔案 ,包括子資料夾中的所有檔案 //遍歷檔案下所有的檔案 public class FileDemo { public static void main(String[] args) { File f

Tabletd,th用了Colspan或者Rowspan之後,設定寬度無效的解決方法

最近用到td中的Colspan,後來設定寬度的時候發現怎麼搞都無法實現到自己想要的效果,最後就把table中的第一行設定為無colspan和rowspan屬性的,該是幾列就幾列,然後把每列寬度設好,用百分比哦,我這裡用

如何讓tabletd自動換行

需要兩步: 1.設定表格table的樣式為style="table-layout:fixed;" 2.然後設定td的樣式為style="word-wrap:break-word;" 比如: <table width="88%" class="table1 tc mt1

遞迴列印指定路徑下所有檔案內容指定檔案裡

# -*- coding: utf-8 -*- """遞迴列印指定路徑下所有檔案 Usage: printDirectory <printFilePath> <saveFilePath> """ from docopt import docopt imp

使tabletd可編輯

//在頁面載入時候,就使td節點具有click點選能力 $(document).ready(function() {var tdNods = $(".tableBody td");tdNods.click(tdClick); }); // td的點選事件 function

設定tabletd寬度不同

類似站內簡訊的形式的一個table,想要的實現結果如下格式: 剛開始覺得“這裡是名字”的td設定寬度為20%就可以了,程式碼如下: <table> <tr class="messageTrU">

SQL SERVER如何獲取指定資料庫所有儲存過程的引數

SELECT sp.object_Id as FunctionId, sp.name as FunctionName, isnull(param.name,'')as ParamName,isnull(usrt.name,'') AS [DataTy

巧用Excel批量提取資料夾所有檔名稱

在工作中,有時候,我們需要整理資料夾中的所有檔名稱,並羅列在一張表格中。天哪,我的資料夾中有上千個檔案,要我一個個的複製貼上嗎?太麻煩了吧?今天,跟著小編一起來探索一種巧妙的方法吧,提升百倍效率哦! 1、首先我們開啟excel,點選“公式”選項卡,單擊“定義名稱”按鈕,彈出

提取資料夾所有檔名(Windows)

在進行附加依賴項新增lib的時候,經常要提取lib資料夾中所有的.lib檔名。 以下為一個很好的方法利用系統批處理檔案來進行檔名稱的提取。 先在需要提取名稱的資料夾內新建一個文字文件(即.txt檔案)。 開啟新件的文字文件,並輸入“DIR *.* /B &g

懸浮顯示input所有內容

專案中經常會遇到這個問題,在一個內容框中,由於框的寬度是固定的,但是裡面的內容卻有

linux提取指定列字符並打印所有內容(awk)

sample 文件 amp col $2 表達式 info logs 文件中 假設有文件長如下樣子: CHROM POS ID REF ALT QUAL FILTER INFO FORMAT samplename 1

tabletd超出內容隱藏,鼠標懸停全部顯示(完整版,含js代碼)

效果 pre order 出現 fun 默認 css語法 標記 -a 一、CSS語法: text-overflow:clip | ellipsis 默認值:clip 適用於:所有元素 clip: 當對象內文本溢出時不顯示省略標記(...),而是將溢出的部分裁切掉。 elli

linux批量替換指定文件夾所有文件的指定內容

lac 指定 clas edit 批量替換 表示 文件的 文件 lin 命令:sed -i "s#https#http#g" `grep http -rl VEROMODA` 功能:用來替換當前目錄VEROMODA文件夾及子文件夾中所有文件中的https為http. 說明:

使用js方法將table表格指定指定相同內容的單元格進行合並操作。

var get 是否 for true ntb doc ide 就是 一、簡介 使用js方法對html中的table表格進行單元格的行列合並操作。 網上執行此操作的實例方法有很多,但根據實際業務的區別,大多不適用。 所以在網上各位大神寫的方法的基礎上進行了部分修改以適合自己

怎麽讓table的<td>內容向上對齊

span clas style class spa ble color 向上 pan <td valign="top"></td> 怎麽讓table中的<td>內容向上對齊

點選table的某一個td 獲得這個tr的所有資料

                功能: 點選table中的某一個td,獲得這個tr的所有資料效果圖<html><head><script>    function getData2(element){        document.getElementById("name