使用Select-String抓取网页或其他方法

时间:2019-06-26 18:49:06

标签: powershell

我需要抓取网页以获取一些信息,并一直试图使用Select-String来做到这一点。我只对页面信息的一部分以及所有其他内容感兴趣,目前正在测试此页面以确保其正常工作。这是我感兴趣的部分...

我尝试过使用Select-String拆分行,并通过互联网和此处找到了其他一些接近但不完全接近的示例。

<div class="adrbox-light clearfix">
  <div class="adrbox-footer">
    <ul>
      <li>Name:
        <span class="darktext">John Test Value</span>
      </li>
      <li>Street Address:
        <span class="darktext">123 Sesame Street</span>
      </li>
      <li>City:
        <span class="darktext">AnyTown</span>
      </li>
      <li>State/Region:
        <span class="darktext">AnyStateRegion</span>
      </li>
      <li>Country:
        <span class="darktext">United States</span>
      </li>
    </ul>
  </div>
    <div id="adrbox-map" class="adrbox-map"></div>
</div>

我唯一感兴趣的使用Select-String返回的行是每行中包含单词“ darktext”的行。

我一直在尝试使用Select-String来执行此操作,但是它从不选择行并且什么也不返回。如何使用Select-String做到这一点,还是在Power Shell中有更好的方法呢?

1 个答案:

答案 0 :(得分:0)

如果您的HTML位于数组中(每个数组项一行),请尝试使用Where-Object而不是Select-String

$HTMLArray | Where-Object {$_ -match "darktext"}

请注意,-match的右操作数被视为正则表达式,必须将其视为正则表达式,因此,如果要匹配字符串中带有点的字符串,例如foo.bar,您必须转义点... $_ match "foo\.bar" ...