我正在尝试从IFA Berlin的参展商处检索所有电子邮件地址。 这很容易爬行。
但作为一个棘手的部分,他们只是允许我们下载.vcf文件或发送电子邮件(我猜他们的服务器)。我想找到那个电子邮件地址而不下载那个vcf文件。否则我可以下载它并使用PHP轻松阅读(因为我的抓取工具也是PHP)。
这也是我潜伏多年后的第一个问题!很高兴见到你们。
答案 0 :(得分:0)
如何从浏览器中读取
.vcf
文件?
此文件始终是文件下载,不会在浏览器中显示。使其工作的一种方法是设置自定义浏览器扩展,临时存储文件并解析微格式并显示信息。
PHP抓取方法
那里有vcard解析器:https://github.com/nuovo/vCard-parser
但我认为你可以基于RegExp解决方案:/EMAIL;INTERNET:(.*)/
。
让我们假装,您的第一次抓取操作会为您提供一份与会者ID列表, 然后你的第二个(vcard)抓取运行可以通过ID获取并提取名称和电子邮件:
<?php
function getVcard($id) {
return file_get_contents('http://www.virtualmarket.ifa-berlin.de/?Action=attendeeVcard&id=' . $id);
}
function getEmailFromVcard($vcard)
{
preg_match('/EMAIL;INTERNET:(.*)/', $vcard, $matches);
if(isset($matches[1])) {
return $matches[1];
}
}
function getNameFromVcard($vcard)
{
preg_match('/N:(.*);;/', $vcard, $matches);
if(isset($matches[1])) {
$array = explode(';', $matches[1]);
$name = trim($array[1]) . ' ' . trim($array[0]);
return $name;
}
}
$id = 1775586;
$vcard = getVcard($id);
$email = getEmailFromVcard($vcard);
$name = getNameFromVcard($vcard);
echo $name . ' ' . $email;