【发布时间】:2017-10-18 05:52:39
【问题描述】:
我正在实施一个抓取蜘蛛来抓取包含房地产报价的网站。该网站包含房地产经纪人的电话号码,可以通过 ajax 发布请求来检索。
要获取电话号码,我必须从 URL 获取 ID,然后从源 csrfToken 获取并通过带有 ID 的特殊 URL 使用 POST 发送此号码。这种方法效果很好,但从昨天开始就不行了。
我的代码:
$urlSite = "https://www.otodom.pl/mazowieckie/oferta/piekne-mieszkanie-na-mokotowie-do-wynajecia-ID3ezHA.html";
$ch = curl_init();
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_URL, $urlSite);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
preg_match("/csrfToken = '(.+?)'/", $result, $output_array);
preg_match("/ID(.+?).html/", $urlSite, $output_array_id);
$token = $output_array[1];
$id = $output_array_id[1];
$url = "https://www.otodom.pl/ajax/mazowieckie/misc/contact/phone/" . $id . "/";
$headers = [
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Encoding: gzip, deflate, br',
'Accept-Language: pl,en-US;q=0.8,en;q=0.6,ru;q=0.4',
'Cache-Control: no-cache',
'Content-Type: application/x-www-form-urlencoded; charset=UTF-8',
'Content-Length: 74',
'Host: www.otodom.pl',
'Referer: ' . $urlSite,
'User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36'
];
$data = array(
'CSRFToken' => $token
);
$data_string = http_build_query($data);
$ch = curl_init();
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$phone = utf8_decode(curl_exec($ch));
curl_close($ch);
echo $phone;
请帮助我,我为此工作了几个小时,一无所获。
【问题讨论】:
-
如果它曾经有效,那么他们可能改变了一些东西。就像 HTML 或一些登录问题,或者他们只是阻止了你。从另一个 IP 地址尝试,看看它是否有效。
-
你需要javascript,culr不支持,尝试使用selenium或类似的
-
我正在尝试通过 REST Client Chrome 发送此请求,但仍然一无所获...
-
{"status":"error","message":"Spróbuj wykonać operację ponownie. Jeśli to nie pomoże, sprawdź czy masz włączoną obsługę JavaScript w przeglądarce."} -
我有同样的答案,我认为电话号码在服务器中受到保护...正确答案是 {"value":["515 174 616"]}