perl HTML::TreeBuilder::XPath
HTML::TreeBuilder::XPath 添加XPath 支持HTML::TreeBuilder
use HTML::TreeBuilder::XPath;
my $tree= HTML::TreeBuilder::XPath->new;
$tree->parse_file( "mypage.html");
my $nb=$tree->findvalue( '/html/body//p[@class="section_title"]/span[@class="nb"]');
my $id=$tree->findvalue( '/html/body//p[@class="section_title"]/@id');
my $p= $html->findnodes( '//p[@id="toto"]')->[0];
my $link_texts= $p->findvalue( './a'); # the texts of all a elements in $p
$tree->delete; # to avoid memory leaks, if you parse many HTML documents
描述:
这个模块增加典型的XPath 到HTML::TreeBuilder, 让它容易查询文档
让它更加容易的查询一个文档。
方法:
额外的方法增加到树对象和每个元素
findnodes ($path)
返回在$path找到的节点的列表 通过$path,在标量环境返回一个Tree::XPathEngine::NodeSet object.
findnodes_as_string ($path)
返回节点的文本值,作为一个字符串
findnodes_as_strings ($path)
返回结果节点的值的列表
findvalue ($path)
返回任何一个 Tree::XPathEngine::Literal, a Tree::XPathEngine::Boolean
或者一个Tree::XPathEngine::Number object.
如果path返回一个节点集,$nodeset->xpath_to_literal会被自动调用
(因此 a Tree::XPathEngine::Literal is returned)
注意 每个对象字符串所带来的开销,
所以你只需要打印找到的值,或者
findvalues ($path)
返回匹配节点的值作为列表,这主要是和findnodes_as_strings一样,除了列表的元素是对象
exists ($path)
如果给定的path存在 就返回true
matches($path)
返回真如果元素匹配路径
use LWP::UserAgent;
use HTML::TreeBuilder;
open DATAFH,">>data.html" || die "open data file failed:$!";
my $ua = LWP::UserAgent->new;
$ua->timeout(10);
$ua->env_proxy;
$ua->agent("Mozilla/8.0");
my $response = $ua->get('https://licai.yingyinglicai.com/product/list.htm');
if ($response->is_success) {
print DATAFH $response->decoded_content; # or whatever
# print $response->decoded_content; # or whatever
use HTML::TreeBuilder::XPath;
my $tree= HTML::TreeBuilder::XPath->new;
$tree->parse_file( "data.html");
##查找body内容,<td><div class="fresh"><p class="text-ellipsis-2"><i class="fresh-icon"></i><a href="/detail/11156-261-500-856-0544.htm">变现宝4275号</a></p></div></td>
my @nb=$tree->findvalue( '/html/body//div[@class="fresh"]');
foreach (@nb){print "Product is $_\n"};
}
else {
die $response->status_line;
};
~
~
~
perl HTML::TreeBuilder::XPath的更多相关文章
- perl 登录某网站
<pre name="code" class="html">use Net::SMTP; use LWP::UserAgent; use HTTP: ...
- perl 爬虫两个技巧
<pre name="code" class="cpp">jrhmpt01:/root/lwp# cat data.html <div cla ...
- perl lwp 超时问题
lwp 超时问题: jrhmpt01:/root/async# cat a1.pl use LWP::UserAgent; use utf8; use DBI; use POSIX; use Data ...
- perl 循环类选择器 ,爬取内容
jrhmpt01:/root/lwp/0526# cat 0526.txt <div class="TXD_sy_title"><span class=" ...
- perl 爬取某理财网站产品信息
use LWP::UserAgent; use utf8; use DBI; $user="root"; $passwd="xxxxx"; $dbh=" ...
- perl 爬取数据<1>
use LWP::UserAgent; use POSIX; use DBI; $user="root"; $passwd="11111111"; $dbh=& ...
- perl 爬取csdn
<pre name="code" class="python">use LWP::UserAgent; use POSIX; use HTML::T ...
- perl 爬取上市公司业绩预告
<pre name="code" class="python">use LWP::UserAgent; use utf8; use DBI; use ...
- perl 爬取同花顺数据
use LWP::UserAgent; use utf8; use DBI; $user="root"; $passwd='xxx'; $dbh=""; $db ...
随机推荐
- js收集错误信息,错误上报
线上的代码可有有时候用户会反应不好使,一般是因为js造成的! 尤其在移动端各个手机之前的差异特别大. 下面这段代码是获取能帮助你! <script> window.onerror = fu ...
- 算法的稳定性(Stability of Sorting Algorithms)
如果具有同样关键字的纪录的在排序前和排序后相对位置保持不变.一些算法本身就是稳定的,如插入排序,归并排序,冒泡排序等,不稳定的算法有堆排序,快速排序等. 然而,一个本身不稳定的算法通过一点修正也能变成 ...
- FTP Client
1: /// <summary> 2: /// FTP 管理类 3: /// </summary> 4: public class FTPManage 5: { 6: priv ...
- mycat(4)
2016二月 24 置原 配置MyCat-eye 接下来在开始使用MyCat之前,我们先把监控平台部署好. 下载MyCat-eye项目,mvn打包. 之后得到类似于Mycat-web-1.0-SNAP ...
- 导致flash屏幕重绘的几种方式及避免重绘的方法
导致屏幕重绘的几种原因: 1.最常见的是情况就是舞台上的可视组件在形状.位置.状态(alpha, scale…)发生改变的时候会触发Flash Player 的重绘. 2.当一个DisplayObje ...
- 基于MapReduce的SimRank++算法研究与实现
一.算法应用背景 计算广告学(Computational Advertising)是一门广告营销科学,以追求广告投放的收益最大化为目标,重点解决用户与广告匹配的相关性和广告的竞价模型问题,涉及到自然语 ...
- debian安装mysql
http://thirteen-tw.blogspot.com/2008/09/debian-mysql-server.html 安裝MySQL-Server debian:~# apt-get in ...
- kaggle之手写体识别
kaggle地址 数据预览 首先载入数据集 import pandas as pd import numpy as np train = pd.read_csv('/Users/frank/Docum ...
- 基础命名空间:序列化 System.Runtime.Serialization
对象通常都有状态(state),从一个对象中抽取这种状态,不论是将它存储于某地,还是通过网络传送,这种抽取动作称为“将一个对象序列化”,而反向处理过程,从一个被序列化的状态重建一个对象即为反序列化. ...
- orcl 行转列的存储过程
CREATE or replace PROCEDURE sp_fixWage AUTHID CURRENT_USER as --此处需要注意的 authid current_user 这个属性 详细 ...