[后端Jquery] - 轻量级无依赖 composer 超小巧的页面抓取分析类

news/2024/7/3 1:20:26

有时候我们需要抓取一个页面的一些信息来完成接口,用完curl得到body后想获取某个标签的时候。 一看到正则委屈么,委屈么


php 的 DOM 模块

PHP自带扩展 http://php.net/dom

<?php
/**
 * @author         Shaowei Pu <542684913@qq.cn>
 * @CreateTime    2017-04-17T19:25:59+0800
 */

$doc = new DOMDocument();

$html = <<<HTML_SECTION
<html><head><title>Sunyanzi's Test</title></head>
<body>
  <h1>Hello World</h1>
  <a href="http://segmentfault.com/" id="onlylink">Hey Welcome</a>
</body></html>
HTML_SECTION;

$doc->loadHTML( $html );

$h1Elements = $doc->getElementsByTagName( 'h1' );
foreach( $h1Elements as $h1Node ){
    echo $h1Node->nodeValue;
} 
echo $doc->getElementById( 'onlylink' )->getAttribute( 'href' );

$xpath = new DOMXPath( $doc );
// also prints "http://segmentfault.com/" ... locate via h1 ... 

echo $xpath->evaluate('string(//h1[text()="Hello World"]/following-sibling::a/@href)'); 

基本上, 等到你熟练掌握 XPath 之后 , 你会发现 DOM 比正则要灵活得多 ...


PhpQuery

使用PhpQuery 完全可以省略curl抓取页面的那一步,写法完全参照Jquery

https://github.com/TobiaszCud...

/**
 * @author         Shaowei Pu <542684913@qq.cn>
 * @CreateTime    2017-04-17T19:25:59+0800
 */
      \phpQuery::newDocumentFile('https://v.qq.com/x/cover/o5neekjf0pl6e0r.html');  
         libxml_use_internal_errors(true);
        // 腾讯视频的真实URL 
        $url = pq('link[rel="canonical"]')[0]->attr('href');


总结

  1. web 采集多样性,如果不是抱着学习正则表达式的态度,应当灵活使用类库

  2. 偷懒万岁!


http://www.niftyadmin.cn/n/2134915.html

相关文章

小说中场景的功能_小说中的“场面调度”——嫉妒中的影像叙事

小说中的“场面调度”——《嫉妒》中的影像叙事阿兰罗伯-格里耶作为电影导演和编剧&#xff0c;他在小说中的写作手法借用了电影里的影像手法&#xff0c;试图把对文字符号的接受转换成银幕上的视觉效果。罗伯-格里耶作为新小说作家的代表人物把文学电影化也算是他的一次大胆尝…

语言const的生命周期_刻意练习Linux c语言内存数据存储方式

第一部分、章节目录1.程序中内存从哪里来12.程序中内存从哪里来23.程序中内存从哪里来34.C语言的字符串类型5.字符串和字符数组的细节第二部分、章节介绍2.1.程序中内存从哪里来1本节首先引出程序运行时对内存的依赖&#xff0c;然后分析这些变量需要的内存从哪里来&#xff0c…

冒泡排序算法

如下是一个基本的冒泡排序算法&#xff0c;执行的过程 外部循环len次内部循环每次用arr[i]的值与arr[j]的值进行比较由于外部循环的i变量每次进入内部循环都不会改变&#xff0c;也就是arr[i]的值进入内部循环后&#xff0c;都会以自身与arr[j]&#xff08;也就是整个数组的所有…

华存数据可视化_大数据技术的应用现状与展望.pdf

大数据技术的应用现状与展望视点聚焦大数据技术的应用现状与展望廖建新(北京邮电大学网络与交换技术国家重点实验室 北京 100876)摘 要 &#xff1a;梳理 了大数据研究的4项关键技术 &#xff1a;“数据的采集、预处理与存储 ”、“数据 的分析与挖掘 ”、“数据 的隐私保护 ”…

python编程怎么画三角形的外接圆_python画出三角形外接圆和内切圆的方法

刚看了《最强大脑》中英对决&#xff0c;其中难度最大的项目需要选手先脑补泰森多边形&#xff0c;再找出完全相同的两个泰森多边形。在惊呆且感叹自身头脑愚笨的同时&#xff0c;不免手痒想要借助电脑弄个图出来看看&#xff0c;闲来无事吹吹牛也是极好的。今天先来画画外接圆…

Ruby中使用patch HTTP方法

Ruby中使用patch HTTP方法 如果使用patch&#xff0c;在后台可以看到只更新了改动的部分&#xff1b; Started PATCH "/ads/5/update" for ::1 at 2017-04-20 20:12:40 0800 Processing by AdsController#update as HTMLParameters: {"utf8">"✓&q…

JAVA必会算法--冒泡排序

pop(int[] a){ for(int i 0;i<a.length;i){ for(int ja.lenght-1;j>0;j){ if(a[j]>a[j1]){ int tmp a[j]; a[j] a[j1]; a[j1] tmp; } } } }转载于:https://www.cnblogs.com/fastLearn/p/6742862.html

求任意个连续整数的和 python_Python:list是否包含3个连续的整数,总和为7?

我正在为我的编码训练营准备应用程序的准备材料.这是我在使用(使用Python)时遇到的实践问题&#xff1a;“编写一个函数’lucky_sevens(numbers)’,该函数接收一个整数列表,如果任意三个连续元素的总和为7,则输出True.确保您的代码正确检查数组的第一个和最后一个元素.”我知道…