1. 爬虫是什么
爬虫是一种程序,它可以自动地浏览网络并提取数据。通常地,爬虫用于像搜索引擎索引网站、价格比较网站、新闻聚合等服务。当用户在搜索引擎中输入关键字时,搜索引擎会利用爬虫在网上找到与关键字相关的网页并返回给用户。
2. PHP爬虫的工作原理
PHP爬虫的工作原理如下:
2.1. 发送HTTP请求并获取HTML数据
PHP爬虫使用cURL库向指定URL发送HTTP GET请求。GET请求返回的数据通常是HTML文档。cURL库提供了基于libcurl的API,它可以让PHP程序直接从Web服务器上获取数据,例如HTTP、FTP等。
$url = 'https://www.example.com';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$html = curl_exec($ch);
curl_close($ch);
2.2. 解析HTML数据并提取需要的信息
PHP爬虫使用PHP内置的DOMDocument类对HTML文档进行解析。可以通过DOMDocument类提供的方法,如getElementsByTagName和getAttribute获取需要的信息。
$doc = new DOMDocument();
@$doc->loadHTML($html);
$links = $doc->getElementsByTagName('a');
foreach($links as $link) {
$href = $link->getAttribute('href');
echo $href;
}
2.3. 存储提取的信息
PHP爬虫提取的信息可以存储到数据库中,文件中,或者内存中等方式,以便后续使用。最常见的方式是存储到数据库中,可以使用PDO或mysqli库。
$db = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
$stmt = $db->prepare("INSERT INTO links (url) VALUES (:url)");
foreach($links as $link) {
$url = $link->getAttribute('href');
$stmt->bindParam(':url', $url);
$stmt->execute();
}
3. 实现一个简单的PHP爬虫
下面是一个简单的PHP爬虫示例:
class Spider {
private $url;
private $content;
public function __construct($url) {
$this->url = $url;
$this->fetch();
}
private function fetch() {
$ch = curl_init($this->url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$this->content = curl_exec($ch);
curl_close($ch);
}
public function parse() {
$doc = new DOMDocument();
@$doc->loadHTML($this->content);
$links = array();
$elements = $doc->getElementsByTagName('a');
foreach($elements as $element) {
$href = $element->getAttribute('href');
if(!empty($href)) {
$links[] = $href;
}
}
return $links;
}
public function store($links) {
$db = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
$stmt = $db->prepare("INSERT INTO links (url) VALUES (:url)");
foreach($links as $link) {
$stmt->bindParam(':url', $link);
$stmt->execute();
}
}
}
$url = 'https://www.example.com';
$spider = new Spider($url);
$links = $spider->parse();
$spider->store($links);
上述示例中,Spider类具有fetch、parse和store等三个方法。fetch方法用于从指定的URL获取HTML内容,parse方法用于解析HTML数据并提取其中Tag为a的超链接信息,store方法用于存储提取的信息到数据库中。