php做爬蟲
㈠ thinkphp 能做爬蟲嗎
爬蟲建議使用python來進行;
做爬蟲PHP不如Python。
㈡ PHP, Python, Node.js 哪個比較適合寫爬蟲
我覺得做爬蟲肯定需要後台技術的支持,和自己的對很多技術的理解和掌握吧,然後就是需要自己去找資料,去請教有經驗的人。
1、如果是定向爬取幾個頁面,做一些簡單的頁面解析,爬取效率不是核心要求,那麼用什麼語言差異不大。 此種情況下,如果還需要做js動態內容的解析,casperjs就不適合了,只有基於諸如chrome V8引擎之類自己做js引擎。
至於C、C++雖然性能不錯,但不推薦,尤其是考慮到成本等諸多因素;對於大部分公司還是建議基於一些開源的框架來做,不要自己發明輪子,做一個簡單的爬蟲容易,但要做一個完備的爬蟲挺難的。
㈢ php中curl爬蟲 怎麼樣通過網頁獲取所有鏈接
本文承接上面兩篇,本篇中的示例要調用到前兩篇中的函數,做一個簡單的URL採集。一般php採集網路數據會用file_get_contents、file和cURL。不過據說cURL會比file_get_contents、file更快更專業,更適合採集。今天就試試用cURL來獲取網頁上的所有鏈接。示例如下:
<?php
/*
* 使用curl 採集hao123.com下的所有鏈接。
*/
include_once('function.php');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.hao123.com/');
// 只需返回HTTP header
curl_setopt($ch, CURLOPT_HEADER, 1);
// 頁面內容我們並不需要
// curl_setopt($ch, CURLOPT_NOBODY, 1);
// 返回結果,而不是輸出它
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$html = curl_exec($ch);
$info = curl_getinfo($ch);
if ($html === false) {
echo "cURL Error: " . curl_error($ch);
}
curl_close($ch);
$linkarr = _striplinks($html);
// 主機部分,補全用
$host = 'http://www.hao123.com/';
if (is_array($linkarr)) {
foreach ($linkarr as $k => $v) {
$linkresult[$k] = _expandlinks($v, $host);
}
}
printf("<p>此頁面的所有鏈接為:</p><pre>%s</pre>n", var_export($linkresult , true));
?>
function.php內容如下(即為上兩篇中兩個函數的合集):
<?php
function _striplinks($document) {
preg_match_all("'<s*as.*?hrefs*=s*(["'])?(?(1) (.*?)\1 | ([^s>]+))'isx", $document, $links);
// catenate the non-empty matches from the conditional subpattern
while (list($key, $val) = each($links[2])) {
if (!empty($val))
$match[] = $val;
} while (list($key, $val) = each($links[3])) {
if (!empty($val))
$match[] = $val;
}
// return the links
return $match;
}
/*===================================================================*
Function: _expandlinks
Purpose: expand each link into a fully qualified URL
Input: $links the links to qualify
$URI the full URI to get the base from
Output: $expandedLinks the expanded links
*===================================================================*/
function _expandlinks($links,$URI)
{
$URI_PARTS = parse_url($URI);
$host = $URI_PARTS["host"];
preg_match("/^[^?]+/",$URI,$match);
$match = preg_replace("|/[^/.]+.[^/.]+$|","",$match[0]);
$match = preg_replace("|/$|","",$match);
$match_part = parse_url($match);
$match_root =
$match_part["scheme"]."://".$match_part["host"];
$search = array( "|^http://".preg_quote($host)."|i",
"|^(/)|i",
"|^(?!http://)(?!mailto:)|i",
"|/./|",
"|/[^/]+/../|"
);
$replace = array( "",
$match_root."/",
$match."/",
"/",
"/"
);
$expandedLinks = preg_replace($search,$replace,$links);
return $expandedLinks;
}
?>
㈣ php 實現網路爬蟲
pcntl_fork或者swoole_process實現多進程並發。按照每個網頁抓取耗時500ms,開200個進程,可以實現每秒400個頁面的抓取。
curl實現頁面抓取,設置cookie可以實現模擬登錄
simple_html_dom 實現頁面的解析和DOM處理
如果想要模擬瀏覽器,可以使用casperJS。用swoole擴展封裝一個服務介面給PHP層調用
在這里有一套爬蟲系統就是基於上述技術方案實現的,每天會抓取幾千萬個頁面。
㈤ PHP爬蟲和基於命令行的Python爬蟲有什麼差別
php和python 寫爬蟲採集一些簡單的都可以,但是相對來說python更好,更方便,有很多現成的庫和方法支持直接解析網站,剖析你需要的數據,而php需要你大部分正則匹配,麻煩。
㈥ 你好,我如何用php來實現網路爬蟲呢具體一點
以下是訪問某音樂網站,並獲取其歌曲名等數組的示例,你可以參考:
<?php
header('Content-type:text/html;charset=utf-8');
$doc = file_get_contents('http://www.songtaste.com/music/');
$pa = '{MSL\((.*)\);}';
preg_match_all($pa,$doc,$r);
for($i=0;$i<count($r[1]);$i++)
{
$r1 = explode(', ',$r[1][$i]);
echo '歌曲標題:'. iconv('gb2312','utf-8',$r1[0]) .' 歌曲ID:'.$r1[1].'<br/>';
}
?>
㈦ 求一個PHP寫的爬蟲,能繞過的。
根據題主的需求,手敲兩個小時代碼,拿走不謝
from selenium import webdriver
import time
import os
import requests
class Huaban():
def get_picture_url(self, content):
global path
path = "E:\spider\pictures\huaban" + '\\' + content
if not os.path.exists(path):
os.makedirs(path)
url = "http://huaban.com"
driver.maximize_window()
driver.get(url)
time.sleep(8)
try:
driver.find_elements_by_xpath('//input[@name="email"]')[0].send_keys('花瓣賬號')
print('user success!')
except:
print('user error!')
time.sleep(3)
try:
driver.find_elements_by_xpath('//input[@name="password"]')[0].send_keys('賬號密碼')
print('pw success!')
except:
print('pw error!')
time.sleep(3)
㈧ php有哪些爬蟲框架
Beanbun 是用 PHP 編寫的多進程網路爬蟲框架,具有良好的開放性、高可擴展性。
php爬蟲框架phpspider
㈨ 除了python可以爬蟲還有哪些編程語言可以爬蟲
能夠做網路爬蟲的編程語言很多,包括PHP、Java、C/C++、Python等都能做爬蟲,都能達到抓取想要的數據資源。針對不同的環境,我們需要了解他們做爬蟲的優缺點,才能選出合適的開發環境。
(一)PHP
網路爬蟲需要快速的從伺服器中抓取需要的數據,有時數據量較大時需要進行多線程抓取。PHP雖然是世界上最好的語言,但是PHP對多線程、非同步支持不足,並發不足,而爬蟲程序對速度和效率要求極高,所以說PHP天生不是做爬蟲的。
(二)C/C++
C語言是一門面向過程、抽象化的通用程序設計語言,廣泛應用於底層開發,運行效率和性能是最強大的,但是它的學習成本非常高,需要有很好地編程知識基礎,對於初學者或者編程知識不是很好地程序員來說,不是一個很好的選擇。當然,能夠用C/C++編寫爬蟲程序,足以說明能力很強,但是絕不是最正確的選擇。
(三)Java
在網路爬蟲方面,作為Python最大的對手Java,擁有強大的生態圈。但是Java本身很笨重,代碼量大。由於爬蟲與反爬蟲的較量是持久的,也是頻繁的,剛寫好的爬蟲程序很可能就不能用了。爬蟲程序需要經常性的修改部分代碼。而Java的重構成本比較高,任何修改都會導致大量代碼的變動。
(四)Python
Python在設計上堅持了清晰劃一的風格,易讀、易維護,語法優美、代碼簡潔、開發效率高、第三方模塊多。並且擁有強大的爬蟲Scrapy,以及成熟高效的scrapy-redis分布式策略。實現同樣的爬蟲功能,代碼量少,而且維護方便,開發效率高。
㈩ 如何用PHP做網路爬蟲
其實用PHP來爬會非常方便,主要是PHP的正則表達式功能在搜集頁面連接方面很方便,另外PHP的fopen、file_get_contents以及libcur的函數非常方便的下載網頁內容。