当前位置:首页 » 编程语言 » php做爬虫

php做爬虫

发布时间: 2022-08-25 04:59:04

㈠ 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 实现网络爬虫

  1. pcntl_fork或者swoole_process实现多进程并发。按照每个网页抓取耗时500ms,开200个进程,可以实现每秒400个页面的抓取。

  2. curl实现页面抓取,设置cookie可以实现模拟登录

  3. simple_html_dom 实现页面的解析和DOM处理

  4. 如果想要模拟浏览器,可以使用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的函数非常方便的下载网页内容。

热点内容
sql语句执行错误 发布:2025-01-18 03:21:49 浏览:650
数据库双引号 发布:2025-01-18 03:10:20 浏览:78
学java和php 发布:2025-01-18 03:01:03 浏览:451
怎么开服务器的端口 发布:2025-01-18 02:54:23 浏览:647
别克君越编程 发布:2025-01-18 02:32:24 浏览:913
ftp游戏下载网站 发布:2025-01-18 02:09:04 浏览:628
python调用另一个文件中的函数 发布:2025-01-18 02:03:54 浏览:597
mysql存储html 发布:2025-01-18 01:57:24 浏览:129
双ip服务器对网站优化有影响吗 发布:2025-01-18 01:56:41 浏览:246
汽车配置怎么区分自动挡 发布:2025-01-18 01:53:06 浏览:229