我只是试图获取所有的< td>位于< tr>内部的元素数据元素.我的问题是因为我试图抓取的表结构是我需要排除所有具有COLLSPAN属性的元素,即< td collspan = 12>

从下面的代码可以看出,获取表数据非常简单,但是由于表结构的原因,我需要排除所有collspan属性.

$html = file_get_contents('http://www.superxv.com/fixtures/'); //get the html returned from the following url

$game_doc = new DOMDocument();

libxml_use_internal_errors(TRUE); //disable libxml errors

if(!empty($html)) { //if any html is actually returned

$game_doc->loadHTML($html);

libxml_clear_errors(); //remove error

$xpath = new DOMXPath($game_doc);

// Modify the XPath query to match the content

foreach ($xpath->query('//table')->item(0)->getElementsByTagName('tr') as $rows) {

$cells = $rows->getElementsByTagName('td');

//$cells2 = $rows->getElementsByTagName('th');

echo '

';

//@ signs are added due to table structure

//Get scrapped columns

echo $dayDateBye[] = $cells->item(0)->textContent;

echo $homeTeam[] = $cells->item(1)->textContent;

echo $awayTeam[] = $cells->item(2)->textContent;

echo $venue[] = $cells->item(3)->textContent;

echo $timeGMT[] = $cells->item(5)->textContent;

echo $timeZA[] = $cells->item(10)->textContent;

echo '

';

}

}

在这里,您可以看到表格结构,其中显示了5个奇数行的灯具,然后在新的一周开始时更改了结构.我可以识别的跳过结构变化的元素都是< td collspan = 12>.元素.这很棘手,因为TD元素没有类名,而仅具有用于标识它的元素.

任何输入表示赞赏.

解决方法:

您可以按标签长度跳过那些

$html = file_get_contents('http://www.superxv.com/fixtures/'); //get the html returned from the following url

$game_doc = new DOMDocument();

libxml_use_internal_errors(TRUE); //disable libxml errors

if(!empty($html)) { //if any html is actually returned

$game_doc->loadHTML($html);

libxml_clear_errors(); //remove error

$xpath = new DOMXPath($game_doc);

// Modify the XPath query to match the content

foreach ($xpath->query('//table')->item(0)->getElementsByTagName('tr') as $rows) {

$cells = $rows->getElementsByTagName('td');

if( $cells->length > 1 ){

//$cells2 = $rows->getElementsByTagName('th');

echo '

';

//@ signs are added due to table structure

//Get scrapped columns

echo $dayDateBye[] = $cells->item(0)->textContent;

echo $homeTeam[] = $cells->item(1)->textContent;

echo $awayTeam[] = $cells->item(2)->textContent;

echo $venue[] = $cells->item(3)->textContent;

echo $timeGMT[] = $cells->item(5)->textContent;

echo $timeZA[] = $cells->item(10)->textContent;

echo '

';

}

}

}

?>

标签:web-scraping,domdocument,html,php

来源: https://codeday.me/bug/20191025/1928820.html

php抓取dom处理后数据,PHP简单DOMDocument抓取排除td类相关推荐

  1. php抓取dom处理后数据,写爬虫时PHP解析HTML最高效的方法那就是用DomCrawler!

    需求来源,需要用PHP解析HTML提取我想要的数据 用PHP写网站爬虫的时候,需要把爬取的网页进行解析,提取里面想要的数据,这个过程叫做网页HTML中数据结构化. 很多人应该知道用phpQuery像J ...

  2. 利用python爬取58同城简历数据_利用python爬取58同城简历数据-Go语言中文社区

    利用python爬取58同城简历数据 最近接到一个工作,需要获取58同城上面的简历信息(http://gz.58.com/qzyewu/).最开始想到是用python里面的scrapy框架制作爬虫.但 ...

  3. 手机抓包app_Python爬取网站上面的数据很简单,但是如何爬取APP上面的数据呢

    前言 在我们在爬取手机APP上面的数据的时候,都会借助Fidder来爬取.今天就教大家如何爬取手机APP上面的数据. 环境配置 1.Fidder的安装和配置 下载Fidder软件地址:https:// ...

  4. Python爬取微信小程序数据[使用Charles手机抓包获取微信小程序的请求]

    前期准备 第一步 注意:首先将电脑和手机连接到一个网路里 然后重启软件 第二步 根据提示,手机设置代理 配置完之后打开Safari浏览器: chls.pro/ssl 手机浏览器直接访问chls.pro ...

  5. Python爬取网站上面的数据很简单,但是如何爬取APP上面的数据呢

    前言 在我们在爬取手机APP上面的数据的时候,都会借助Fidder来爬取.今天就教大家如何爬取手机APP上面的数据. 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过 ...

  6. python爬取抖音用户数据_使用python爬取抖音视频列表信息

    如果看到特别感兴趣的抖音vlogger的视频,想全部dump下来,如何操作呢?下面介绍介绍如何使用python导出特定用户所有视频信息 抓包分析 Chrome Deveploer Tools Chro ...

  7. python爬取17000个球员_Python爬取NBA球员生涯数据及简单可视化

    由于全球疫情的原因 NBA宣布无限期推迟比赛 也被迫随之进入了长草期 紧接着 狂摸话筒戈贝尔 连坐队友米切尔 网络小帅杜兰特 绿军硬汉斯马特 等十名球员相继官宣感染 洛杉矶湖人两人感染 但未公布名单 ...

  8. python爬虫抓取动态网页数据_python网络爬虫抓取ajax动态网页数据:以抓取KFC门店地址为例...

    一,尝试用BeautifulSoup抓取 先打开KFC网站门店列表页面:http://www.kfc.com.cn/kfccda/storelist/index.aspx 可以看到门店列表如下图: 打 ...

  9. fiddler抓取特定主机(网址)和App抓包

    Fiddler抓取特定网址和App抓包 一.抓取特定网址 1.设置(特定地址) 2.出现的问题处理 二.app抓包 一.抓取特定网址 1.设置(特定地址) shift+F5去缓存刷新(可排除因缓存原因 ...

最新文章

  1. 6款强大的jQuery插件 创建和加强网站布局
  2. w3wp trace文件Debug
  3. exit函数的头文件问题
  4. 变态题大串烧:微软面试问题 -- 二.没有答案型
  5. 计算机视觉算法工程师 笔试,深度学习算法工程师笔试题目
  6. 自动替换 Kubernetes 镜像
  7. 网页java在div输出内容_JS实现读取xml内容并输出到div中的方法示例
  8. ELK实践(二):收集Nginx日志
  9. System.Net.Http.Formatting的nuget版本冲突问题
  10. unity Mesh Renderer的一点想法
  11. 责任链(Chain of Responsibility)模式
  12. 国内外最顶级的8大plm项目管理系统
  13. 图解|什么是蒙提霍尔问题(三门问题)
  14. 一个经济学果粉对国内iOS游戏厂商的5点斥责和5个建议
  15. JAVA实现诗词_基于jsp的古诗词网站-JavaEE实现古诗词网站 - java项目源码
  16. 快递员上门取件api接口技术对接java文档
  17. python画误差图_Python数据可视化:如何创建误差图
  18. 身体指数bmi流程图_【新城校区】新生体检丨你了解你的身体吗?
  19. 南通大学计算机学院本科考研,2017年南通大学计算机科学与技术学院919C考研题库...
  20. Unity Render Streaming 云渲染尝鲜

热门文章

  1. 使用C#创建Windows服务
  2. python 集合 gather
  3. 51nod1574排列转换
  4. PyQt5教程——组件(7)
  5. Outlook替代Hotmail:社交很重要,但邮箱是根本
  6. android nfc开发_意法半导体NFC产品线完整 满足多元应用_企业动态_新闻中心
  7. ie浏览器在线使用_关于登录深圳市住房公积金管理中心网站在线办理平台的温馨提示...
  8. 如何java面试_短时间如何过java面试?
  9. 什么是提花?大提花面料与小提花面料如何区别?
  10. MySQL打不开用户_mysql打不开了