我想用cURL和PHP來抓取一些LinkedIn公司頁面。 LinkedIn的API不是爲此而構建的,所以我必須使用PHP來完成此操作。如果還有其他選擇,請讓我知道...我怎樣才能用cURL和PHP刮掉LinkedIn公司頁面?在頭文件中找不到CSRF令牌錯誤
在刮掉公司頁面之前,我必須通過cURL在個人帳戶中登錄LinkedIn,但似乎並不奏效。
我已經找到'沒有在頭部找到CSRF令牌'的錯誤。
有人可以幫我嗎?
謝謝!
<?php
require_once 'dom/simple_html_dom.php';
$linkedin_login_page = "https://www.linkedin.com/uas/login";
$username = 'linkedin_username';
$password = 'linkedin_password';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $linkedin_login_page);
curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17');
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
$login_content = str_get_html(curl_exec($ch));
if(curl_error($ch)) {
echo 'error:' . curl_error($ch);
}
if ($login_content) {
if (($login_content->find('input[name=isJsEnabled]', 0))) {
foreach($login_content->find('input[name=isJsEnabled]') as $element) {
$isJsEnabled = trim($element->value);
if ($isJsEnabled === "false") {
$isJsEnabled = "true";
}
}
}
if (($login_content->find('input[name=source_app]', 0))) {
foreach($login_content->find('input[name=source_app]') as $element) {
$source_app = trim($element->value);
}
}
if (($login_content->find('input[name=tryCount]', 0))) {
foreach($login_content->find('input[name=tryCount]') as $element) {
$tryCount = trim($element->value);
}
}
if (($login_content->find('input[name=clickedSuggestion]', 0))) {
foreach($login_content->find('input[name=clickedSuggestion]') as $element) {
$clickedSuggestion = trim($element->value);
}
}
if (($login_content->find('input[name=session_redirect]', 0))) {
foreach($login_content->find('input[name=session_redirect]') as $element) {
$session_redirect = trim($element->value);
}
}
if (($login_content->find('input[name=trk]', 0))) {
foreach($login_content->find('input[name=trk]') as $element) {
$trk = trim($element->value);
}
}
if (($login_content->find('input[name=loginCsrfParam]', 0))) {
foreach($login_content->find('input[name=loginCsrfParam]') as $element) {
$loginCsrfParam = trim($element->value);
}
}
if (($login_content->find('input[name=fromEmail]', 0))) {
foreach($login_content->find('input[name=fromEmail]') as $element) {
$fromEmail = trim($element->value);
}
}
if (($login_content->find('input[name=csrfToken]', 0))) {
foreach($login_content->find('input[name=csrfToken]') as $element) {
$csrfToken = trim($element->value);
}
}
if (($login_content->find('input[name=sourceAlias]', 0))) {
foreach($login_content->find('input[name=sourceAlias]') as $element) {
$sourceAlias = trim($element->value);
}
}
}
curl_setopt($ch, CURLOPT_URL, "https://www.linkedin.com/uas/login-submit");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'isJsEnabled='.$isJsEnabled.'&source_app='.$source_app.'&tryCount='.$tryCount.'&clickedSuggestion='.$clickedSuggestion.'&session_key='.$username.'&session_password='.$password.'&session_redirect='.$session_redirect.'&trk='.$trk.'&loginCsrfParam='.$loginCsrfParam.'&fromEmail='.$fromEmail.'&csrfToken='.$csrfToken.'&sourceAlias='.$sourceAlias);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$store = curl_exec($ch);
curl_setopt($ch, CURLOPT_URL, 'https://www.linkedin.com/company/facebook');
curl_setopt($ch, CURLOPT_POST, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, "");
$content = curl_exec($ch);
curl_close($ch);
echo $content;
?>
你的問題可能會被關閉,因爲它不是很清楚你要求什麼,你提供的代碼在你的問題中沒有被真正引用,也沒有被問到具體的問題。但是你應該看看這個名爲[Scrapy]的Python網站抓取框架(https://scrapy.org/),它使得從網站上提取內容非常容易,甚至可以讓你的刮板登錄到LinkedIn,所以你可以查看內容。祝你好運。 –
嗨諾亞,謝謝你提及Scrapy。我想我的問題很清楚,我如何使用cURL和PHP來刮取LinkedIn公司頁面? –
嘗試提出更具體的問題,cURL和PHP是2個巨大的工具/技術。嘗試澄清你已經完成了什麼,什麼不工作。 –