【问题标题】:Scrape Data from HTML page using Simple HTML Dom使用简单的 HTML Dom 从 HTML 页面中抓取数据
【发布时间】:2021-05-18 23:55:39
【问题描述】:

我是 Web Scraping 的新手。我有一个 HTML 页面,我希望从中抓取数据。我已经设法使用以下代码获取标题等数据

$name= $html->find('h1[class=page-title]', 0)->plaintext;

但现在我有一个像下面这样的 div

<div class="company--performance-data">

          <div class="field field--name-field-stock-price-prev-close field--type-decimal field--label-above field__items">
      <div class="field__label">Previous trading day’s Close</div>
                <div content="61.58000" class="field__item">
        $61.58
            </div>
          </div>

          <div class="field field--name-field-stock-price-current-high field--type-decimal field--label-above field__items">
      <div class="field__label">Current high for the day</div>
                <div content="64.40000" class="field__item">
        $64.40
            </div>
          </div>

          <div class="field field--name-field-stock-price-current-low field--type-decimal field--label-above field__items">
      <div class="field__label">Current low for the day</div>
                <div content="62.78000" class="field__item">
        $62.78
            </div>
          </div>

          <div class="field field--name-field-days-volume field--type-decimal field--label-above field__items">
      <div class="field__label">Day's Volume</div>
                <div class="field__item">
        406
            </div>
          </div>

      
          <div class="field field--name-field-30-days-average-volume field--type-decimal field--label-above field__items">
      <div class="field__label">30 days average volume</div>
                <div content="0.553734" class="field__item">
        1
            </div>
          </div>

          <div class="field field--name-field-market-cap field--type-string field--label-above field__items">
      <div class="field__label">Market Cap</div>
                <div class="field__item">
        $0.00
            </div>
          </div>

          <div class="field field--name-field-stock-52-week-high field--type-decimal field--label-above field__items">
      <div class="field__label">52-week high</div>
                <div content="72.60" class="field__item">
        $72.60
            </div>
          </div>

          <div class="field field--name-field-stock-52-week-low field--type-decimal field--label-above field__items">
      <div class="field__label">52-week low</div>
                <div content="42.64" class="field__item">
        $42.64
            </div>
          </div>

          <div class="field field--name-field-stock-last-paid-div-value field--type-decimal field--label-above field__items">
      <div class="field__label">Last paid dividend value</div>
                <div content="0.47" class="field__item">
        $0.47
            </div>
          </div>

          <div class="field field--name-field-stock-dividend-yield field--type-decimal field--label-above field__items">
      <div class="field__label">Dividend Yield</div>
                <div content="3.03814" class="field__item">
        3.04%
            </div>
          </div>

          <div class="field field--name-field-stock-funds-from-operation field--type-decimal field--label-above field__items">
      <div class="field__label">Previous quarter FFO</div>
                <div content="217.76" class="field__item">
        $217.76mil
            </div>
          </div>


      </div>

我想从中获取每个字段值,例如 $0.47。但由于它有类名字段,我不知道如何从中获得价值。这里的任何人都可以帮助我吗?

非常感谢!

【问题讨论】:

  • 是否总是有一个包含每个值的&lt;div content="..."&gt;?如果是,为什么不直接获取呢?
  • @AbsoluteBeginner as 你可以看到一些 div 没有那个值。

标签: php simple-html-dom


【解决方案1】:

请试试这个:

foreach($html1->find("div.field__item") as $m)
{
    $txt = trim($m->plaintext);
    $attribute_array = $m->attr;
    if(isset($attribute_array['content']))
    {
        var_dump($attribute_array['content']);
    }
    var_dump($txt);
}

【讨论】:

  • 嗨!它很好,但有些 div 没有内容=。您可以为此花费答案吗?谢谢!
  • 所以你也想要 content="62.78000" 的值吗?即值 62.78000?
  • 嗨!所有 div 都有值,但是有些没有内容,所以我们可以使用值。谢谢!
  • 对于这个div:
    $64.40
    你要拉$64.40还是64.40000?
  • 编辑了答案。请检查。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-02
  • 1970-01-01
  • 2013-07-30
  • 1970-01-01
  • 2011-03-23
相关资源
最近更新 更多