【问题标题】:Can't grab a certain item from a webpage无法从网页中抓取特定项目
【发布时间】:2018-10-05 11:56:55
【问题描述】:

我在 php 中编写了一个脚本来抓取 电话号码电子邮件地址来自网页。当我执行以下脚本时,我得到了 电话号码,但如果是 电子邮件地址,我会得到这个电子邮件

我所关注的两个字段位于该网页的标题下方Sterling Systems & Control Inc.

This is the site address

到目前为止我的尝试:

<?php
    include "simple_html_dom.php";
    function curlGet($url)
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0');
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        $results = curl_exec($ch);
        curl_close($ch);
        $dom = new simple_html_dom();
        $dom->load($results);
        return $dom;
    }
    $data = curlGet('https://us.kompass.com/a/grinding-machinery-and-equipment-for-the-food-industry/49030/');
    foreach($data->find("div.list-buttons-container") as $item){
        $phone = $item->find("#freePhone--US947504",0)->value;
        $email = $item->find("[class='coordonneesItemLink'] .coordinate-item-text",1)->innertext;
        echo "{$phone} {$email}<br>";
    }
?>

我此时的输出(而不是电子邮件地址,我只得到以下文本):

+1 8156250852 Email

这是它们在该站点中的显示方式:

【问题讨论】:

  • 电话号码包含在 HTML 代码中……而电子邮件地址似乎没有,该按钮仅打开一个联系表单。

标签: php curl web-scraping css-selectors simple-html-dom


【解决方案1】:

你不能。

电子邮件地址按钮会打开一个对话框,让您可以向相关产品所有者(或其他任何人)发送电子邮件。电子邮件地址很可能存储在数据库中,只有在您通过表单实际发送电子邮件时才会检索到。

如果电子邮件地址不在页面中的任何位置,则您实际上无法获取它。

【讨论】:

  • 感谢@Alberto 提供的信息。如果我填写表格并希望得到回复怎么办?有可能吗?
  • 正如我所说,电子邮件地址在 html 中是不可见的(也就是说,它不是以明文形式写在某处的),因此您无法获取它。字段上有“公司 id”(在本例中为 US947504),这是指数据库中的 id,它将链接到电子邮件地址以让脚本向公司发送电子邮件。
猜你喜欢
  • 1970-01-01
  • 2018-02-14
  • 2020-01-28
  • 2021-08-17
  • 2020-06-17
  • 2020-08-30
  • 2019-08-28
  • 1970-01-01
  • 2019-06-15
相关资源
最近更新 更多