我在代码的第二部分遇到输出问题。
function getSiteContent($url)
{
$html = cache()->rememberForever($url, function () use ($url) {
return file_get_contents($url);
});
$parser = new \DOMDocument();
@$parser->loadHTML($html);
return $parser;
}
libxml_use_internal_errors(true);
$url = 'https://sumai.tokyu-land.co.jp/osaka';
$parser = getSiteContent($url);
$allDivs =[];
$allDivs = $parser->getElementsByTagName('div');
foreach ($allDivs as $div) {
if ($div->getAttribute('class') == 'p-articlelist-content-right') {
$allLinks = $div->getElementsByTagName('a');
foreach ($allLinks as $a) {
$getlinks[] = $a->getAttribute('href');
}
}
}
var_dump($getlinks);
在此var_dump中,我可以看到我抓取的链接。没问题,直到这里。还有一次。我想进入这些链接。这就是为什么我在下面编写代码。
getSiteContent($getlinks);
$link = [];
$siteler = [];
foreach ($siteler as $site) {
if($site == 'https://sumai.tokyu-land.co.jp'){
$site = $getlinks->getElementsByTagName('div');
foreach ($site as $links) {
if($links->getAttribute('class') == 'pc_hnavi'){
$linker = $links->getElementsByTagName('a');
foreach ($linker as $a) {
$link = $a->getAttribute('href');
}
}
}
}
}
var_dump($link);
当我var_dump时。它说数组0 我不明白为什么在foreach的那些链接中没有显示 我的密码有误吗?我在这里想念什么?有什么想法吗? 谢谢你帮我
答案 0 :(得分:1)
正如我在评论中说的,__init
在您尝试遍历时为空,但是还有更多问题:
$siteler
函数。DOM
变量,因此最终结果将只是一个链接。这是固定代码:
$link
但是,这不会检查链接是否已存在于数组中,并有可能一遍又一遍地处理相同的链接。我强烈建议使用现有的搜寻器。
从注释中可以看出,$link = [];
foreach ($getlinks as $site) {
// Any link in the domain, not just the homepage
if(strpos($site, 'https://sumai.tokyu-land.co.jp') === 0) {
$dom = getSiteContent($site);
$divs = $dom->getElementsByTagName('div');
foreach ($divs as $div) {
// Can have more than one class
$attrs = explode(' ', $div->getAttribute('class'));
if(in_array('pc_hnavi', $attrs)) {
$linker = $div->getElementsByTagName('a');
foreach ($linker as $a) {
// Add to the array
$link[] = $a->getAttribute('href');
}
}
}
}
}
是pc_hnavi
而不是类,您仅对第一个链接感兴趣。您可以直接访问该元素,而无需迭代元素:
id
答案 1 :(得分:0)
您的问题似乎在这里:
...
$siteler = []; // $siteler is set to an empty array ...
foreach ($siteler as $site) { // then you loop through the empty array which does nothing ...
...
}
...
修复该问题,可以帮助您入门。