Laravel - 是否可以从外部网站将数据保存到mySQL数据库?

时间:2017-09-25 19:24:06

标签: php html mysql laravel guzzle

假设我发现一个网站有以下标记:



<body>
  <div id="paper">
    <div id="contentwrapper">
      <div id="rightcontent">
        <h1>1967-002A</h1>
        <p>
          <strong>NSSDCA/COSPAR ID:</strong> 1967-002A</p>
        <div class="twocol">
          <div class="urone">
            <h2>Description</h2>
            <p>
              This US Air Force photo surveillance satellite was launched from Vandenberg AFB aboard a Thor Agena D rocket. It was a KH-4A (Key Hole-4A) type satellite. The satellite had fair image quality.
            </p>
          </div>
          <div class="urtwo">
            <h2>Alternate Names</h2>
            <ul>
              <li>02642</li>
            </ul>
            <h2>Facts in Brief</h2>
            <p>
              <strong>Launch Date:</strong> 1967-01-14
              <br/>
              <strong>Launch Vehicle:</strong> Thor
              <br/>
              <strong>Launch Site:</strong> Vandenberg AFB, United States
              <br/>
              <strong>Mass:</strong> 1500.0 kg
              <br/>
            </p>
            <h2>Funding Agency</h2>
            <ul>
              <li>Department of Defense-Department of the Air Force (United States)</li>
            </ul>
            <h2>Discipline</h2>
            <ul>
              <li>Surveillance and Other Military</li>
            </ul>
          </div>
        </div>
      </div>
    </div>
  </div>
</body>
&#13;
&#13;
&#13;

这包含信息,例如说明,发布日期,运载火箭,发射场地和质量,资助机构和纪律。 - 这些都可能是mySQL数据库中的列。

该网页的链接为/spacecraftDisplay.do?id=1967-002A。我已经有了一个带有1967-002A的数据库 - 航天器标识符。所以我猜测从我的数据库中获取每个标识符并使​​用相同的标识符保存URL中的数据。每个网页都是相同的

我已经知道如何使用Guzzle从具有JSON格式的外部API保存数据。我们正在处理外部网站的HTML,而不是JSON。

首先我想知道的是,是否可以从网页上保存这些数据,或者您可以做什么限制?

1 个答案:

答案 0 :(得分:1)

您可以使用DOM解析器http://simplehtmldom.sourceforge.net/

它基本上将整个HTML页面粘贴在对象中,然后您可以访问该对象中的任何元素。

//Example
$html = file_get_html('http://www.google.com/');
foreach($html->find('img') as $element) {
    echo $element->src . '<br>';
}