PHP爬虫最全总结2-phpQuery,PHPcrawer,snoopy框架中文介绍

1.几种常用的PHP爬虫框架对比

原文链接:https://blog.csdn.net/future_todo/article/details/52804440

1.1 phpQuery

优势:类似jquery的强大搜索DOM的能力。 
pq()是一个功能强大的搜索DOM的方法,跟jQuery的$()如出一辙,jQuery的选择器基本上都能使用在phpQuery上,只要把“.”变成“->”,Demo如下(对应我的github的Demo5)

<?php
 require(‘phpQuery/phpQuery.php‘);
 phpQuery::newDocumentFile(‘http://www.baidu.com/‘);
 $menu_a = pq("a");
 foreach($menu_a as $a){
    echo pq($a)->html()."<br>";
 }
 foreach($menu_a as $a){
    echo pq($a)->attr("href")."<br>";
 }
?>

1.2 PHPcrawer

优势:过滤能力比较强。 
官方给的Demo如下(我的github中对应demo4):

<?php
    include("PHPCrawl/libs/PHPCrawler.class.php");
    class MyCrawler extends PHPCrawler
    {
      function handleDocumentInfo(PHPCrawlerDocumentInfo $PageInfo)
      { // As example we just print out the URL of the document
        echo $PageInfo->url."<br>";
      }
    }
    $crawler = new MyCrawler();
    $crawler->setURL("www.baidu.com");
    $crawler->addURLFilterRule("#\.(jpg|gif)$# i");
    //过滤到含有这些图片格式的URL
    $crawler->go();
 ?>

1.3 snoopy

优势:提交表单,设置代理等 
Snoopy是一个php类,用来模拟浏览器的功能,可以获取网页内容,发送表单, 
demo如下(对应github中的demo3):

include ‘Snoopy/Snoopy.class.php‘;
$snoopy = new Snoopy();
$url = "http://www.baidu.com";
// $snoopy->fetch($url);
// $snoopy->fetchtext($url);//去除HTML标签和其他的无关数据
$snoopy->fetchform($url);//只获取表单
//只返回网页中链接 默认情况下,相对链接将自动补全,转换成完整的URL。
// $snoopy->fetchlinks($url);
var_dump($snoopy->results);

1.4 phpspider

优势:安装配置到数据库 
提供了安装配置,能够直接连接mysql数据库,使用也是比较广泛,这里我们暂时不单独介绍。

2.模拟用户行为

2.1 file_get_contents

<?php
$opts = array(
  ‘http‘=>array(
    ‘method‘=>"GET",
    ‘header‘=>"Accept-language: en\r\n" .
              "Cookie: foo=bar\r\n"
  )
);

$context = stream_context_create($opts);

/* Sends an http request to www.example.com
   with additional headers shown above */
$fp = fopen(‘http://www.example.com‘, ‘r‘, false, $context);
fpassthru($fp);
fclose($fp);
?>

2.2 curl

$ch=curl_init();  //初始化一个cURL会话
curl_setopt($ch,CURLOPT_URL,$url);//设置需要获取的 URL 地址
// 设置浏览器的特定header
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  "Host: www.baidu.com",
  "Connection: keep-alive",
  "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
  "Upgrade-Insecure-Requests: 1",
  "DNT:1",
  "Accept-Language: zh-CN,zh;q=0.8,en-GB;q=0.6,en;q=0.4,en-US;q=0.2",
  "Cookie:_za=4540d427-eee1-435a-a533-66ecd8676d7d;"
));
$result=curl_exec($ch);//执行一个cURL会话

2.3 snoopy

  • 表单提交

我们的一个例子 
form-demo.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>form-demo</title>
</head>
<body>
    <form action="./form-demo.php" method="post">
        用户名:<input type="text" name="userName"><br>
        密 码:<input type="password" name="password"><br>
        <input type="submit">
    </form>
</body>
</html>

form-demo.php

<?php
    $userName = $_POST[‘userName‘];
    $password = $_POST[‘password‘];
    if($userName==="admin"&&$password==="admin"){
        echo "hello admin";
    }else{
        echo "login error";
    }
 ?>
 ```
提交表单
```php
<?php
include ‘Snoopy/Snoopy.class.php‘;
$snoopy = new Snoopy();
$formvars["userName"] = "admin";
//userName 与服务器端/表单的name属性一致
$formvars["password"] = "admin";
$action = "http://localhost:8000/spider/demo3/form-demo.php";//表单提交地址
$snoopy->submit($action,$formvars);
echo $snoopy->results;
?>

<div class="se-preview-section-delimiter"></div>

原文地址:https://www.cnblogs.com/kangbk/p/8657690.html

时间: 2024-12-18 14:53:00

PHP爬虫最全总结2-phpQuery,PHPcrawer,snoopy框架中文介绍的相关文章

[python爬虫] Selenium常见元素定位方法和操作的学习介绍

这篇文章主要Selenium+Python自动测试或爬虫中的常见定位方法.鼠标操作.键盘操作介绍,希望该篇基础性文章对你有所帮助,如果有错误或不足之处,请海涵~ 前文目录: [Python爬虫] 在Windows下安装PhantomJS和CasperJS及入门介绍(上) [Python爬虫] 在Windows下安装PIP+Phantomjs+Selenium [Python爬虫] Selenium自动访问Firefox和Chrome并实现搜索截图 [Python爬虫] Selenium实现自动登

[Python爬虫] Selenium实现自动登录163邮箱和Locating Elements介绍

目录(?)[+] 前三篇文章介绍了安装过程和通过Selenium实现访问Firefox浏览器并自动搜索"Eastmount"关键字及截图的功能.而这篇文章主要简单介绍如何实现自动登录163邮箱,同时继续介绍Selenium+Python官网Locating Elements部分内容.        希望该篇基础性文章对你有所帮助,如果有错误或不足之处,请海涵~        [Python爬虫] 在Windows下安装PhantomJS和CasperJS及入门介绍(上)        

Python全栈修炼日记之一:编程语言的介绍

Python 简介 Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构. Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节.类似于PHP和Perl语言. Python 是交互式语言: 这意味着,您可以在一个Python提示符,直接互动执行写你的程序. Python 是面向对象语言: 这意味着Python支持面向对象的风格

网页爬虫框架jsoup介绍

序言:在不知道jsoup框架前,由于项目需求,需要定时抓取其他网站上的内容,便想到用HttpClient方式获取指定网站的内容,这种方法比较笨,就是通过url请求指定网站,根据指定网站返回文本解析.说白了HttpClient充当一下浏览器的角色,返回的文本需要自己处理,一般都是用string.indexOf或者string.subString方法处理. 当有一天发现jsoup这个框架时一时感慨,之前的方法太笨了... jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址.HTM

1Python全栈之路系列Web框架介绍

Python全栈之路系列之Web框架介绍 所有的语言Web框架本质其实就是起一个socket服务端,监听一个端口,然后运行起来 Web框架包含两部分,一部分是socket,另外一部分是业务的逻辑处理,根据请求的不同做不同的处理 Python的Web框架分成了两类, 即包含socket也包含业务逻辑处理的(tornado) 不包含socket(框架本身通过第三方模块实现socket)只包含业务逻辑处理(django,Flask) WSGI的全称是Web Server Gateway Interfa

史上最全的常用iOS的第三方框架

文章来源:http://blog.csdn.net/sky_2016/article/details/45502921 图像:1.图片浏览控件MWPhotoBrowser       实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等操作.      下载:https://github.com/mwaterfall/MWPhotoBrowser 目前比较活跃的社区仍旧是Github,除此以外也有一些不错的库散落

介绍requests+threading多线程爬虫,提取采用xpath 和正则两种,介绍线程锁

爬虫专业的都喜欢scrapy框架,但scrapy上手需要时间,对初学者不太适合. 本文介绍使用requets爬虫,为了利于演示学习,使用了xpath解析html和完全使用正则来提取两种方法,仅供参考. import requests,json,random import re,threading from lxml import etree lock=threading.Lock() user_agent_list = [ "Mozilla/5.0 (Windows NT 6.1; WOW64)

Python爬虫从入门到成妖之3-----Scrapy框架的命令行详解

创建爬虫项目 scrapy startproject 项目名 例子如下: E:\crawler>scrapy startproject test1 New Scrapy project 'test1', using template directory 'd:\\python36\\lib\\site-packages\\scrapy\\templates\\project', created in: E:\crawler\test1 You can start your first spide

Python爬虫从入门到成妖之7-----Scrapy框架中Download Middleware用法

这篇文章中写了常用的下载中间件的用法和例子.Downloader Middleware处理的过程主要在调度器发送 requests请求的时候以及网页将 response结果返回给 spiders的时候,所以从这里我们可以知道下载中间件是介于 Scrapy的 request/response处理的钩子,用于修改 Scrapy request和 response. 编写自己的下载器中间件 编写下载器中间件,需要定义以下一个或者多个方法的python类 为了演示这里的中间件的使用方法,这里创建一个项目