请帮助我从这个结构中获取信息:
<table id="id1" class="class1">
<tbody>
<tr id="id2">
<td>
<span class="class2">
<a href="/folder1/folder2/id412217">"header text"</a>
</span>
</td>
<td id="d" style="width:10px;">
<img style="width:10px;" src="/images/img1.gif">
</td>
<td id="r" style="width:40%;">
<span class="class2">
<nobr>Headings:</nobr>
</span>
</td>
</tr>
<tr>
<td>
<table class="class1" style="width:100%;">
<tbody>
<tr>
<td width="300" valign="top"></td>
</tr>
<tr>
<td style="padding:0px;">
<div>
<b>Address: </b>
<a href="/folder1/folder2/id412217">Address text</a>
</div>
<div>
<b>Tel.: </b>
250-1729
</div>
<br>
</td>
</tr>
</tbody>
</table>
</td>
<td>
<img src="/images/img.gif">
</td>
<td>
<a href="/yp/folder2/rubric1067/">heading1</a>
<br>
<a href="/yp/folder2/rubric1068/">heading2</a>
<br>
<a href="/yp/folder2/rubric1063/">heading3</a>
<br>
</td>
</tr>
</tbody>
我想得到:
但我不明白,我怎样才能使用PowerShell。
首先,我得到这张表
$address = "http://address.com"
$page = Invoke-WebRequest $address
$table = $($page.parsedhtml.getElementsByTagName("table") | Where { $_.id -eq 'id1' })
下一步是什么? 如何调用桌子的孩子并获取他们的文本?
答案 0 :(得分:2)
这是我的决定:
$address = "http://address.com"
$page = Invoke-WebRequest $address
$table = $($page.parsedhtml.getElementById("id1")
$tr = $table.getElementsByTagName('tr') | Where { $_.id -eq 'id2' }
$name=($tr.getElementsByTagName('a') | select -First 1).innertext
$divs=$table.getElementsByTagName('div')
foreach ($div in $divs) {
if ($div.innertext -match "address: ") {$adr=$div.innertext -replace "Address: ",""}
if ($div.innertext -match "Tel.: ") {$tel=$div.innertext -replace "Tel.: ",""}
}
$resultmassive+=[string]::Join(";",$name,$adr,$tel)
P.S。也许,有可能使用PowerShell switch-case construcion而不是foreach,但它对我不起作用。
答案 1 :(得分:0)
首先:如果您的元素具有ID,请使用$data=$collection1->aggregate(array( '$group'=> array('_id'=>$valoreScelto,'contatore'=>array('$sum'=>1))));
而不是$valoreScelto = trim('$'.$campoSelezionato);
并使用其他过滤器。这将立即为您提供正确的表格(或其他元素)。
当您拥有(父)元素时,您可以通过在父级上调用Fatal error: Call to a member function aggregate() on string
,getElementById()
等来获取嵌套元素:
getElementsByTagName()
在你的情况下你想得到
标识为getElementById()
的子元素,然后是(大)子元素getElementsByTagName()
元素(标题文本)
$nestedTables = $table.getElementsByTagName('table')
嵌套表格中的id2
元素(地址和电话号码):
<a>