这里的新手程序员刚刚开始学习 php 并尝试制作我自己的网络爬虫。我进行了一些广泛的搜索,但似乎找不到解决方案。
我创建了一个表单,允许用户提交查询,然后从 pinterest 中抓取图像并显示热门点击。但是,在提交查询后第一次加载页面时,我得到:“注意:未定义的偏移量:第 27 行的 C:\xampp\htdocs\domwebcrawler.php 中的 0”(28 和 29)。刷新 X 次后,页面最终将加载图片。
这些行对应于我的代码行
HTML/PHP
<html>
<head>
<link type="text/css" href="domwebcrawler.css" rel="stylesheet" media="all" />
</head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="get">
<input type="text" name="searchquery"> <input type="submit"> <br>
What do you want to search today?
<?php
include 'simple_html_dom.php';
$dom = new simple_html_dom();
@$query = $_GET["searchquery"];
if (!empty($query)) {
$dom->load_file('http://pinterest.com/search/pins/?q=' . urlencode($query));
$images= $dom->find('.PinHolder img');
$descriptions = $dom->find('.description');
$repins = $dom->find('.RepinsCount');
?>
<div class="js-masonry" data-masonry-options='{"itemSelector": ".pins", "columnWidth":10}'>
<?php
for ($i=0; $i< 20 ; $i++) {
echo '<div class="pins">';
if($images[$i])
echo '<div class="pinimg">' . $images[$i] . '</div>';
if($descriptions[$i])
echo '<div class="description">'. $descriptions[$i] . '</div>';
if($repins[$i])
echo '<div class="repin_count">' . $repins[$i] . '</div>';
echo '</div>';
};
};
?>
</div>
</body>
<script src="masonry.js"></script>
<script src="jquery.js" type="text/javascript"></script>
<script src="jquery.lazyload.js" type="text/javascript"></script>
</html>
CSS
.pins {
padding: 1%;
margin:1%;
border:solid 3px black;
width: 200px;
}
.pinimg img{
width:100%;
}
.description, .repin_count {
text-align: center;
}
我认为这可能是由于页面在加载所有抓取的内容之前加载的事实?但我不确定!
欢迎所有帮助(以及对低效代码的批评)!
温暖的问候