【问题标题】:Stuck trying to retrieve images from a list - scraping webpage卡住试图从列表中检索图像 - 抓取网页
【发布时间】:2018-01-06 16:30:01
【问题描述】:

我在抓取网页方面有一些非常基本的知识,但是我被困在一件事上。我正在使用 php simple html dom,并且正在努力从每个“li”标签中获取图像。

<ul class="slides">
  <li>
    <img src="www.webpage.com/oH7oCOEhQABNAE2hnTQ.jpg" draggable="false">
  </li>

  <li>
    <img src="www.webpage.com/ooabIAkbadaaIEJnkka.jpg" draggable="false">
  </li>

  <li>
    <img src="www.webpage.com/bEQLaooknOAEQlaihna.jpg" draggable="false">
  </li>
</ul>   

我可以使用以下代码轻松获得第一张图片:

    $td = $d1->find('ul.slides li img',0);
    if ($td != null){
        $slides_image1 = trim($td->src) ;
    }

但无法弄清楚如何获取任何其他图像。显然我需要去第一个'li'并检索该图像,然后是第二个'li'并检索该图像,等等......有人可以帮忙吗?

【问题讨论】:

  • 你能给我们更多的源代码吗?我猜$d1DOMDocument。然后你可以只做$d1-&gt;getElementsByTagName("img") 并得到所有的img-tags。

标签: php html dom web-scraping


【解决方案1】:

使用简单的 HTML DOM 解析器,而不是将 0 传递给find,它表示返回第一个实例,错过这个值并返回所有实例。所以使用foreach()中的返回值...

$slides_image = [];
foreach ($d1->find('ul.slides li img') as $td) {
    $slides_image[] = trim($td->src) ;
}

【讨论】:

  • 嗨奈杰尔,感谢您的快速回复。看起来很棒。只有一件事 - 我将所有图像插入 MySQL 数据库,每个图像都在它自己的字段中(名为 slides_image1 ... to ...slides_image10)。然后我将如何修改 mysql_query 以确保将正确的图像插入到数据库中的正确字段中?
  • 取决于您如何插入它,但在最简单的情况下 - $slide_image1 现在将是 $slides_image[0](因为数组是基于 0 的)到 $slide_image10 将是 $slides_image[9]。跨度>
  • 谢谢奈杰尔,效果很好!感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-14
  • 2017-09-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多