搜索html中的内容(Search the contents in the html)
HTML中有两个不同的标签,分别是
row0-1
和row1-1
。 我想从row1-1
标记中搜索名为row1Time
的HTML中的内容。这是HTML示例:
<li class="zc-ssl-pg" id="row0-1" style=""> <span id="row1Time" class="zc-ssl-pg-time">4:00 PM</span> <li class="zc-ssl-pg" id="row1-1" style=""> <span id="row1Time" class="zc-ssl-pg-time">3:00 PM</span>
这是我的PHP:
<?php $errmsg_arr = array(); $errflag = false; $link; function db_connect() { define('DB_HOST', 'localhost'); define('DB_USER', 'myusername'); define('DB_PASSWORD', 'mypassword'); define('DB_DATABASE', 'mydbname'); $errmsg_arr = array(); $errflag = false; $link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD); if(!$link) { die('Failed to connect to server: ' . mysql_error()); } $db = mysql_select_db(DB_DATABASE); if(!$db) { die("Unable to select database"); } } $links = $row['links']; include ('simple_html_dom.php'); $html = file_get_html($links); //echo $row['links']; $base = $row['links']; $curl = curl_init(); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); curl_setopt($curl, CURLOPT_URL, $base); curl_setopt($curl, CURLOPT_REFERER, $base); curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); $str = curl_exec($curl); curl_close($curl); // Create a DOM object $html = new simple_html_dom(); // Load HTML from a string $html->load($str); //get all category links /*foreach($html_base->find('a') as $element) { echo "<pre>"; print_r( $element->href ); echo "</pre>"; }*/ //$html_base->clear(); //unset($html_base); $time1 = $html->find('span[id=row1Time]', 0)->plaintext; echo '<span id="time1">'.$time1.'</span> - '; ?>
当我尝试使用以下方法解析HTML中的内容时:
$time1 = $html->find('span[id=row1Time]', 0)->plaintext; echo '<span id="time1">'.$time1.'</span> - ';
我得到的返回输出来自标签
row0-1
withrow1Time
:4:00 PM
我想从带有
row1Time
的标签row1-1
搜索HTML中的内容,以获得包含3:00 PM
的返回。 你能帮我用simple_html_dom
帮助我获取这些内容吗?There are two different tags in the HTML which are
row0-1
androw1-1
. I want to search for the contents in the HTML calledrow1Time
from therow1-1
tag.Here's and example HTML:
<li class="zc-ssl-pg" id="row0-1" style=""> <span id="row1Time" class="zc-ssl-pg-time">4:00 PM</span> <li class="zc-ssl-pg" id="row1-1" style=""> <span id="row1Time" class="zc-ssl-pg-time">3:00 PM</span>
Here's my PHP:
<?php $errmsg_arr = array(); $errflag = false; $link; function db_connect() { define('DB_HOST', 'localhost'); define('DB_USER', 'myusername'); define('DB_PASSWORD', 'mypassword'); define('DB_DATABASE', 'mydbname'); $errmsg_arr = array(); $errflag = false; $link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD); if(!$link) { die('Failed to connect to server: ' . mysql_error()); } $db = mysql_select_db(DB_DATABASE); if(!$db) { die("Unable to select database"); } } $links = $row['links']; include ('simple_html_dom.php'); $html = file_get_html($links); //echo $row['links']; $base = $row['links']; $curl = curl_init(); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); curl_setopt($curl, CURLOPT_URL, $base); curl_setopt($curl, CURLOPT_REFERER, $base); curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); $str = curl_exec($curl); curl_close($curl); // Create a DOM object $html = new simple_html_dom(); // Load HTML from a string $html->load($str); //get all category links /*foreach($html_base->find('a') as $element) { echo "<pre>"; print_r( $element->href ); echo "</pre>"; }*/ //$html_base->clear(); //unset($html_base); $time1 = $html->find('span[id=row1Time]', 0)->plaintext; echo '<span id="time1">'.$time1.'</span> - '; ?>
When I tried to parse the contents from the HTML using this:
$time1 = $html->find('span[id=row1Time]', 0)->plaintext; echo '<span id="time1">'.$time1.'</span> - ';
The return output I get is from the tags
row0-1
withrow1Time
:4:00 PM
I want to search for the contents in the HTML from the tags
row1-1
withrow1Time
to get the return contains3:00 PM
. Can you please help me get those contents usingsimple_html_dom
?
原文:https://stackoverflow.com/questions/22848741
最满意答案
我试图用SWI-Prolog重新格式化你的代码:
keys(Struct):- member(Struct,child(_,4,_,_)), member(Struct,child(_,5,_,_)), member(Struct,child(_,6,_,_), member(Struct,child(_,7,_,_), member(Struct,child(_,8,_,_)), member(Struct,child(_,_,"Banana",_), ...
似乎你错过了一些括号...在明显的修正后,我得到了
?- solve. Solve:[child(Dima,6,Icecream,Thunderstorm),child(Kate,8,Pasta,Spiders),child(Misha,5,Chocolate,Ghosts),child(Sveta,7,Pizza,Dogs),child(Ura,4,Banana,Darkness)] true .
I tried to reformat your code with SWI-Prolog:
keys(Struct):- member(Struct,child(_,4,_,_)), member(Struct,child(_,5,_,_)), member(Struct,child(_,6,_,_), member(Struct,child(_,7,_,_), member(Struct,child(_,8,_,_)), member(Struct,child(_,_,"Banana",_), ...
seems you're missing some parenthesis... after the obvious correction, I get
?- solve. Solve:[child(Dima,6,Icecream,Thunderstorm),child(Kate,8,Pasta,Spiders),child(Misha,5,Chocolate,Ghosts),child(Sveta,7,Pizza,Dogs),child(Ura,4,Banana,Darkness)] true .
相关问答
更多-
Java堆栈溢出错误 - 如何增加Eclipse中的堆栈大小?(Java stack overflow error - how to increase the stack size in Eclipse?)[2024-02-09]
打开应用程序的运行配置 (运行/运行配置...,然后在“Java应用程序”中查找应用程序条目)。 参数选项卡具有文本框Vm参数 ,输入-Xss1m (或最大堆栈大小的更大参数)。 默认值为512 kByte(SUN JDK 1.5 - 不知道供应商和版本之间是否不同)。 Open the Run Configuration for your application (Run/Run Configurations..., then look for the applications entry in 'Jav ... -
嗯...它适用于我,并且远远低于999MB的堆栈: > java -Xss4m Test 0 (Windows JDK 7,构建17.0-b05客户端VM和Linux JDK 6 - 与您发布的版本信息相同) Hmm... it works for me and with far less than 999MB of stack: > java -Xss4m Test 0 (Windows JDK 7, build 17.0-b05 client VM, and Linux JDK 6 - same v ...
-
LuaJit增加堆栈/堆大小(LuaJit increase stack/heap size)[2021-09-20]
我自己没有使用过LuaJIT,除了玩具示例。 但是,由于没有人提供任何答案...... 从浏览文档开始 ,LuaJIT依赖于标准协程库的Coco扩展。 Coco引入的一个变化是创建新协程的函数现在采用指定堆栈大小的可选参数。 引用Coco文档: coro = coroutine.create(f [, cstacksize]) func = coroutine.wrap(f [, cstacksize]) 可选参数cstacksize指定要为协程分配的C堆栈的大小: 如果未给出cstacksize或者nil ... -
在大多数unix-y平台上,堆栈大小(默认情况下)为8MB,Windows上为 1MB(即,因为Windows具有确定性的从堆栈问题中恢复的方式 ,而unix-y平台通常会引发通用的SIGSEGV信号)。 如果你的分配很大,你不会看到在堆上分配和在堆上分配之间的性能差异。 当然,每个分配的堆栈效率稍高,但如果分配量很大,分配的数量可能很小。 如果你想要一个更大的栈式结构,你总是可以编写自己的分配器,它从malloc中获得一个大块,然后以堆栈式的方式处理分配/释放。 #include
... -
增加堆栈大小(Increase stack size)[2022-05-10]
将stacksize设置为无限可能对你没有帮助。 你在堆栈上分配一个64MB的块,可能不会从顶部填充,而是从底部填充。 这很重要,因为操作系统可以随时增加堆栈。 每当它在堆栈段下方检测到页面错误时,它将假定您需要更多空间,并静默插入新页面。 但是,地址空间中此触发器区域的大小是有限的,我怀疑它大于64 MB。 由于您的索引变量可能位于堆栈上的数组下方,因此访问它们已经完成了64 MB的跳转,从而导致您的进程终止。 只需使您的数组allocatable ,添加相应的allocate()语句,您应该没问题。 S ... -
我试图用SWI-Prolog重新格式化你的代码: keys(Struct):- member(Struct,child(_,4,_,_)), member(Struct,child(_,5,_,_)), member(Struct,child(_,6,_,_), member(Struct,child(_,7,_,_), member(Struct,child(_,8,_,_)), member(Struc ...
-
有没有办法将默认堆栈大小增加到16777216字节以外?(Is there a way to increase the default stack size beyond 16777216 bytes?)[2023-09-20]
您可以使用{$MAXSTACKSIZE} (或{$M minstacksize maxstacksize}编译器指令将其{$M minstacksize maxstacksize}请注意,这与{$M}用法不同于用于表示生成的{$M+/-} RTTI课程。 来自XE6 docwiki (它也适用于以前的版本): $ M指令指定应用程序的堆栈分配参数。 minstacksize必须是介于1024和2147483647之间的整数,它指定应用程序堆栈的最小大小,而maxstacksize必须是minstacksiz ... -
我喜欢在启动脚本中设置JAVA_OPTS,因此很容易配置 #!/bin/bash export JAVA_OPTS="$JAVA_OPTS -Djava.protocol.handler.pkgs=com.rwsol.util.protocol" export JAVA_OPTS="$JAVA_OPTS -Xss2m -Xms256m -Xmx1024m -XX:MaxPermSize=256M" export JAVA_HOME="/System/Library/Java/JavaVirtualMach ...
-
使用XCode增加堆栈大小(Increase stack size with XCode)[2022-08-02]
从项目窗口: 目标> [您的目标]>信息>构建>其他链接标志> [您的标志] From the project window: Targets > [Your target] > info > Build > Other Linker Flags > [your flags] -
您的错误确实是由递归过多引起的StackOverflow,但Processing会将您看到的奇怪错误覆盖起来。 有关该bug的文档在这里 。 您可以增加Java堆栈大小以增加递归调用的限制。 信息可以在这里找到,但要点是你必须在运行时将-Xss设置传递给Java。 但是,该设置要求您将草图作为Java应用程序运行。 这是可能的,但它涉及将草图导出为jar,然后通过命令提示符运行jar,或切换到eclipse。 这比简单地点击Processing-中的运行按钮要多得多,而且你发送jar的任何用户都必须这样做。 ...