好的,所以我有一个页面上有图像,我想要抓取并返回以下信息:
我有工作要返回一张图片,但是我需要它来返回所有这些(大概有5张)
这就是我现在所拥有的:
function getMostRecentScreenshot($url) {
$content = file_get_contents($url);
$first_step = explode('<div class="imageWall5Floaters">' , $content );
$second_step = explode('<div style="clear: left;"></div>' , $first_step[1] );
return $second_step[0];
}
这是它返回的内容
<div class="floatHelp">
<a href="websiteurl.com/imagepage" onclick="return OnScreenshotClicked(9384938);" class="profile_media_item modalContentLink " data-desired-aspect="1.77777777778">
<div style="background-image: url('website.com/image');" class="imgWallItem " id="imgWallItem_757249198">
<div style="position: relative;">
<input type="checkbox" style="position: absolute; display: none;" name="screenshots[9384938]" class="screenshot_checkbox" id="screenshot_checkbox_9384938" />
</div>
<div class="imgWallHover" id="imgWallHover9384938">
<div class="imgWallHoverBottom">
<div class="imgWallHoverDescription ">
<q class="ellipsis">Quote about the image</q>
</div>
</div>
</div>
</div>
</a>
给定图像具有不同的ID(9384938部分)。
我如何获得所需信息?
我现在有另一个函数返回其中一个图像的数据(种类),但它基本上与爆炸之间的代码完全相同,这非常混乱。
答案 0 :(得分:0)
您可以在此函数中使用PHP的Union = A | B # where A,b,Union are sets
类:
DOMDocument
将其命名为:
function getDataFromHTML($html) {
$doc = new DOMDocument();
$html = $doc->loadHTML($html);
foreach($doc->getElementsByTagName('a') as $a) {
if (strpos($a->getAttribute('class'), 'profile_media_item') !== false) {
$row = [];
$row['baseURL'] = $a->getAttribute('href');
foreach($a->getElementsByTagName('div') as $div) {
preg_match("~(?<=url\(['\"]).*?(?=['\"])~",
$div->getAttribute('style'), $attr);
$row['imageURL'] = reset($attr);
foreach($a->getElementsByTagName('q') as $q) {
$row['quote'] = $q->textContent;
break;
}
break;
}
$result[] = $row;
}
}
return $result;
}
样本数据的输出是:
$result = getDataFromHTML($html);
如果在具有多个DOM结构的HTML字符串上运行,则外部数组将具有更多此类条目。