所有专业人士的快速问题。我试图在此页http://forums.moneysavingexpert.com/forumdisplay.php?f=36
屏幕上删除线程标题我正在使用DOMXPath,查看上面页面的源代码,标题包含在以下代码中:
<a href="showthread.php?t=...number representing thread..."
id="thread_title_...number representing thread..."
style="font-weight:bold">TITLE OF THREAD</a>
我从这段代码开始:
$list3 = $xpath3
->evaluate("//a[contains(@style, 'font-weight:bold')]");
但是,有多个<a style="font-weight:bold">
。我的问题是:你能合并contains
吗?例如,包含@style
和@href
?
如果是这样,你怎么能用上面的href来做,它的数字根据它的线程而变化?你能做[0-9]型的东西吗?
我很感激我能得到任何帮助!
答案 0 :(得分:1)
使用以下表达式获取href
包含showthread.php?t=2
的链接:
//a[contains(@style, 'font-weight:bold') and
contains(@href, 'showthread.php?t=2')]
如果您想获得任何这些链接(无论t=<n>
中的数字如何),请使用以下表达式:
//a[contains(@style, 'font-weight:bold') and
contains(translate(@href, '0123456789', ''), 'showthread.php?t=', )]
请注意,如果这些字符串始终显示在starts-with
的开头,您也可以使用href
。
答案 1 :(得分:0)
我认为你可以做组合,但在你的情况下,我认为获得每个tr的第3个t并获得里面的标题会更简单。再次,不要依赖于风格,它不是很语义。
您需要学习xpath,例如,您可以在w3schools学习它。此外,如果您使用firebug,您可以右键单击html选项卡中的任何元素并获取其xpath。以下是我获得的第一个标题://*[@id="td_threadtitle_3499047"]
...不太好。
对于线程表,我得到了这个://*[@id="threadslist"]
...这样更好,没有数字。
现在让我们获得第3个td://*[@id="threadslist"]//td[3]
现在是第二个链接,必须与标题相对应://*[@id="threadslist"]//td[3]/div/a[2]
。得到它?也许我错了,但我希望你有这个主意......
依靠这个位置也不是很语义,但你似乎没有太多的选择......