1
외부 HTML 테이블에서 100 행 3 열의 데이터를 스크랩하고 있습니다. 각 행의 데이터가 결합 된 10x10 테이블로 데이터를 구문 분석하고 싶습니다. 예 :DOMXPath에서 html 테이블 데이터 구문 분석
<tr>
<td>info1</td>
<td>info2</td>
<td>info3</td>
</tr>
<tr>
<td>info4</td>
<td>info5</td>
<td>info6</td>
</tr>
<tr>
<td>info7</td>
<td>info8</td>
<td>info9</td>
</tr>
...and so on
I 출력 수
<tr>
<td>info1<br/>info2<br/>info3</td>
<td>info4<br/>info5<br/>info6</td>
<td>info7<br/>info8<br/>info9</td>
...7 more times
</tr>
...9 more times
으로 줄 바꿈을 사용하여 단일 열로 데이터. 나는 위에서하고 싶은 것을 할 생각이 전혀 없다. 또한 CSS를 사용하여 데이터의 스타일을 지정하고 싶습니다. 모든 도움/방향을 부탁드립니다. 이 작업을 수행 할 수
$doc = new DOMDocument();
$doc->loadHTML($html);
libxml_clear_errors(); //remove errors for yucky html
xpath = new DOMXPath($doc);
$table = $xpath->query('//table[@id="idTable"]')->item(0);
$rows = $table->getElementsByTagName("tr");
foreach($rows as $row)
{
$cells = $row -> getElementsByTagName('td');
foreach ($cells as $cell) print $cell->nodeValue . "<br/>";
}
그래서 문제가 무엇입니까? 새 테이블을 출력하려면 해당 테이블에 대한 스캐 폴딩을 출력해야합니다. 지금은 '
@MarcB 잘 내 문제는 시각적으로 각 셀에 3 개의 기준과 특정 25x25 테이블에 대한 발판을 만들고 for 루프에서 인쇄하고 있습니다. – rambossa
xpath는'$ table-> getElementsByTagName ('td')'이어야합니다. 당신은 html로 정의 된 순서대로 개별 tds를 얻습니다. 그리고 나서 그것들을 반복하여 새 테이블에 채우는 것은 간단합니다. 행이 무엇인지 신경 쓰지 않으므로 원본 테이블의 행을 완전히 무시할 수 있습니다. tds에 집중하십시오. –
답변
두 (유사) 방법 :
1)
을 여기 내 코드입니다 새로운<tr>
의를 계산하고 각 (10)을 결합함으로써, 그<td>
수 무시 :<td>
, 빗으로<td>
S를 계산하고 각 3 결합함으로써Online demo
2) 오프라인 새로운
<tr>
로 각 (30)은<tr>
들 무시 :Online demo
모두 출력 :
출처
2014-03-03 04:05:18 Passerby
선생님, 고맙습니다. 제 2의 옵션을 사용했는데 효과가있었습니다. 감사합니다. – rambossa
관련 문제