PHP实现最简单爬虫原型
最简单的爬虫模型应该是这样的:给一个初始url,爬虫把内容扒下拉,找页面里的url,在以这些url为起点,开始爬。
下面是一个最简单的php实现的爬虫模型。
- /**
- * 爬虫程序 -- 原型
- *
- * BookMoth 2009-02-21
- */
- /**
- * 从给定的url获取html内容
- *
- * @param string $url
- * @return string
- */
- function _getUrlContent($url){
- $handle = fopen($url, "r");
- if($handle){
- $content = stream_get_contents($handle,1024*1024);
- return $content;
- }else{
- return false;
- }
- }
- /**
- * 从html内容中筛选链接
- *
- * @param string $web_content
- * @return array
- */
- function _filterUrl($web_content){
- $reg_tag_a = '/\'\"\ ]*).*?>/';
- $result = preg_match_all($reg_tag_a,$web_content,$match_result);
- if($result){
- return $match_result[1];
- }
- }
- /**
- * 修正相对路径
- *
- * @param string $base_url
- * @param array $url_list
- * @return array
- */
- function _reviseUrl($base_url,$url_list){
- $url_info = parse_url($base_url);
- $base_url = $url_info["scheme"].'://';
- if($url_info["user"]&&$url_info["pass"]){
- $base_url .= $url_info["user"].":".$url_info["pass"]."@";
- }
- $base_url .= $url_info["host"];
- if($url_info["port"]){
- $base_url .= ":".$url_info["port"];
- }
- $base_url .= $url_info["path"];
- print_r($base_url);
- if(is_array($url_list)){
- foreach ($url_list as $url_item) {
- if(preg_match('/^http/',$url_item)){
- //已经是完整的url
- $result[] = $url_item;
- }else {
- //不完整的url
- $real_url = $base_url.'/'.$url_item;
- $result[] = $real_url;
- }
- }
- return $result;
- }else {
- return;
- }
- }
- /**
- * 爬虫
- *
- * @param string $url
- * @return array
- */
- function crawler($url){
- $content = _getUrlContent($url);
- if($content){
- $url_list = _reviseUrl($url,_filterUrl($content));
- if($url_list){
- return $url_list;
- }else {
- return ;
- }
- }else{
- return ;
- }
- }
- /**
- * 测试用主程序
- *
- */
- function main(){
- $current_url = "http://hao123.com/";//初始url
- $fp_puts = fopen("url.txt","ab");//记录url列表
- $fp_gets = fopen("url.txt","r");//保存url列表
- do{
- $result_url_arr = crawler($current_url);
- if($result_url_arr){
- foreach ($result_url_arr as $url) {
- fputs($fp_puts,$url."\r\n");
- }
- }
- }while ($current_url = fgets($fp_gets,1024));//不断获得url
- }
- main();
- ?>
当然这只爬虫还需要进行下面的进化才可以:
1、拼接更准确的url链接。现在的链接有可能是格式错误的。
2、能够去掉重复的url链接。现在的爬虫会做非常多非常多的重复工作。
3、避免爬虫怕成环路,一个永远右转的车,只能是300内环,它只会跑在三环路上,去不了别的地方。
4、多线程或者多进程。因为php没有线程的概念,所以可能需要shell这样的东西来模拟了。
5、……略去2的N次方个汉字。
反正是意思一下就好了~
from http://blog.csdn.net/bookmoth/archive/2009/02/21/3916538.aspx

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

Kod Visual Studio, juga dikenali sebagai Kod VS, ialah editor kod sumber percuma — atau persekitaran pembangunan bersepadu (IDE) — tersedia untuk semua sistem pengendalian utama. Dengan koleksi sambungan yang besar untuk banyak bahasa pengaturcaraan, Kod VS boleh menjadi c

Tutorial ini menunjukkan cara memproses dokumen XML dengan cekap menggunakan PHP. XML (bahasa markup extensible) adalah bahasa markup berasaskan teks yang serba boleh yang direka untuk pembacaan manusia dan parsing mesin. Ia biasanya digunakan untuk penyimpanan data

Rentetan adalah urutan aksara, termasuk huruf, nombor, dan simbol. Tutorial ini akan mempelajari cara mengira bilangan vokal dalam rentetan yang diberikan dalam PHP menggunakan kaedah yang berbeza. Vokal dalam bahasa Inggeris adalah a, e, i, o, u, dan mereka boleh menjadi huruf besar atau huruf kecil. Apa itu vokal? Vokal adalah watak abjad yang mewakili sebutan tertentu. Terdapat lima vokal dalam bahasa Inggeris, termasuk huruf besar dan huruf kecil: a, e, i, o, u Contoh 1 Input: String = "TutorialSpoint" Output: 6 menjelaskan Vokal dalam rentetan "TutorialSpoint" adalah u, o, i, a, o, i. Terdapat 6 yuan sebanyak 6

Python ialah bahasa pengenalan pengaturcaraan yang ideal untuk pemula melalui kemudahan pembelajaran dan ciri yang berkuasa. Asasnya termasuk: Pembolehubah: digunakan untuk menyimpan data (nombor, rentetan, senarai, dll.). Jenis data: Mentakrifkan jenis data dalam pembolehubah (integer, titik terapung, dll.). Operator: digunakan untuk operasi matematik dan perbandingan. Aliran kawalan: Kawal aliran pelaksanaan kod (penyataan bersyarat, gelung).

Java Made Simple: Panduan Permulaan untuk Kuasa Pengaturcaraan Pengenalan Java ialah bahasa pengaturcaraan berkuasa yang digunakan dalam segala-galanya daripada aplikasi mudah alih hingga sistem peringkat perusahaan. Untuk pemula, sintaks Java adalah ringkas dan mudah difahami, menjadikannya pilihan ideal untuk pembelajaran pengaturcaraan. Sintaks Asas Java menggunakan paradigma pengaturcaraan berorientasikan objek berasaskan kelas. Kelas ialah templat yang menyusun data dan tingkah laku yang berkaitan bersama-sama. Berikut ialah contoh kelas Java yang mudah: publicclassPerson{privateStringname;privateintage;

Java ialah bahasa pengaturcaraan popular yang boleh dipelajari oleh pembangun pemula dan berpengalaman. Tutorial ini bermula dengan konsep asas dan diteruskan melalui topik lanjutan. Selepas memasang Kit Pembangunan Java, anda boleh berlatih pengaturcaraan dengan mencipta program "Hello, World!" Selepas anda memahami kod, gunakan gesaan arahan untuk menyusun dan menjalankan program, dan "Hello, World!" Pembelajaran Java memulakan perjalanan pengaturcaraan anda, dan apabila penguasaan anda semakin mendalam, anda boleh mencipta aplikasi yang lebih kompleks.

Pythonmemperkasakan pemula dalam menyelesaikan masalah.Sintaksnya yang mesra pengguna, perpustakaan luas, dan ciri-ciri seperti pembolehubah, pernyataan bersyarat, dan pembangunan kod yang cekap boleh dilonggarkan. Daripada mengurus data untuk mengawal aliran program dan melaksanakan tugasan berulang, Pythonprovid
